HOME>WEBプログラム覚書>[CakePHP3.7]LayoutでCellを使ったら memory size エラー出る場合
[CakePHP3.7]LayoutでCellを使ったら memory size エラー出る場合
layoutファイルの中でcellをrender()するとViewでmemory size エラー出る場合がある。
どうやらViewでsetLayout()とか使ってると無限ループのようになってメモリエラーになるっぽい??
下手なlayout設定は命取りになる模様。
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 81 bytes) パターン
TagsというCellを使うとしてレイアウトに
\App\Template\Layout\public.ctp
<?php
echo $this->cell('Tags')->render();
?>
とコーディングした場合、View::initializeでsetLayout()とかlayout設定するとだめみたい。
\App\View\MyView.php
<?php
namespace App\View;
use Cake\View\View;
class MyView extends View
{
public function initialize()
{
parent::initialize();
$this->setLayout('public'); // Error: Allowed memory size of ~ になる
$this->layout = 'public'; // Error: Allowed memory size of ~ になる
}
}
?>
正しいlayoutの設定
正しいかどうかは怪しいけどとりあえずAllowed memory size が出ないようにするには、
Viewの場合
\App\View\MyView.php
<?php
namespace App\View;
use Cake\View\View;
class MyView extends View
{
$this->layout = 'public';//プロパティを宣言
public function initialize()
{
parent::initialize();
}
}
?>
Controllerの場合
\App\Controller\Pages.php
<?php
public function home()
{
$this->viewBuilder()->setLayout('public');
}
?>
テンプレートの場合
\App\Template\Pages\home.ctp
<?php
/**
* @var \App\View\MyView $this
*/
$this->layout = 'public';
?>
のようにすると大丈夫な模様。
投稿日 |
2018年6月 5日 04:01 |
カテゴリ |
PHP |
タグ |
CakePHP | エラーコード | フレームワーク |
トラックバック URL |
http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1788 |
コメント