concrete5.7で出たエラー
Call to a member function setBlockObject
珍しくconcrete5で困ったエラーが出ました。原因は不明ですが、いつもの使い方と違うのは、エリア追加を多用したことかな。
それがダメだったのかはわかりません。
解決法
concrete5のフォーラムにこのエラーのことがあったので助かりました。/application/blocks
の中に
core_area_layoutフォルダを作って、その中に
①controller.php
②view.php
を置く。
controller.phpの中身は
<?phpnamespace Application\Block\CoreAreaLayout;use Concrete\Core\Area\Layout\Layout as AreaLayout;class Controller extends \Concrete\Block\CoreAreaLayout\Controller {public function getAreaLayoutObject(){if ($this->arLayoutID) {$arLayout = AreaLayout::getByID($this->arLayoutID);$b = $this->getBlockObject();if (is_object($arLayout) && is_object($b)) {$arLayout->setBlockObject($b);}return $arLayout;}}}
view.phpの中身は
<?phpdefined('C5_EXECUTE') or die("Access Denied.");$a = $b->getBlockAreaObject();if(isset($formatter)) {$container = $formatter->getLayoutContainerHtmlObject();foreach($columns as $column) {$html = $column->getColumnHtmlObject();$container->appendChild($html);}print $container;}
だそうです。
見事直りました。
直ってからこのエラーが出ていたページの編集モードに入ると、消せない&表示もされないエリアが1ヶ所あったので、そこが何かエラーになったのでしょうね。
コメント