2016年11月20日日曜日

concrete5.7で出たエラー

Call to a member function setBlockObject

珍しくconcrete5で困ったエラーが出ました。

原因は不明ですが、いつもの使い方と違うのは、エリア追加を多用したことかな。

それがダメだったのかはわかりません。


解決法

concrete5のフォーラムにこのエラーのことがあったので助かりました。

/application/blocks
の中に
core_area_layoutフォルダを作って、その中に

①controller.php
②view.php

を置く。

controller.phpの中身は

<?php
namespace 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の中身は

<?php
defined('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ヶ所あったので、そこが何かエラーになったのでしょうね。


0 件のコメント :