私はかなり長い間CakePHP 2.0を使ってきましたが、私は3.0に移行しようとしています。大部分は問題ありませんが、テーブルからデータを取得してビューに表示する方法には本当に混乱しています。取得したデータをCakePHP 3.0に表示する方法を教えてください。
私のデータベースにはメニューとメニューが含まれています。各メニューには、多くのメンテーム(各Menuitemレコードにはmenu_idフィールドがあります)を持つことができます。ケーキ3.0で
Model:
Menu hasMany Menuitem
Controller:
$this->set->recursive = 1;
$menu = $this->Menu->findById($menuid);
View:
foreach($menu['Menuitem'] as $item) {
... display item ...
}
が、私はこれを再現しようとしています:
ので、CakePHPの2.0に私は次なければならなかったでしょう。だから、私は持っている:
In Model/Table/MenusTable.php:
public function initialize(array $config)
{
$this->hasMany('Menuitems', [
'sort' => ['Menuitems.order' => 'ASC']
]);
}
In Controller:
$menus= TableRegistry::get('Menus');
$query = $menus->find('all')
->contain(['Menuitems');
$menulist= $query->toArray();
$this->set(compact('menulist'));
私は今どのようにビューでこれを表示するのですか?
私がしようとした場合:
foreach($menu['Menuitem'] as $item)
、私はエラー "未定義のインデックス:メニューアイテムを" 取得します。
次に、私は$ menu.menuuitemsと$ menu-> menuitemsを試しましたが、それらもうまくいきませんでした。どこが間違っていますか?ありがとう!
編集:数日のうちに消えてしまって申し訳ありません。もし私がデバッグをしたら($ menulist);私は、次を得る:ちょうどあなたの設定した変数をデバッグ
foreach($menulist->Menuitems as $item)
{
// your logic here
}
:
(int) 0 => object(Cake\ORM\Entity) {
'id' => (int) 1,
'name' => 'Main',
'menuitems' => [
(int) 0 => object(Cake\ORM\Entity) {
'id' => (int) 1,
'subsite_id' => (int) 1,
'page_id' => (int) 1,
'parentmenuitem_id' => null,
'nav_order' => (int) 1,
'nav_width' => null,
'children' => [],
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Menuitems'
},
(int) 1 => object(Cake\ORM\Entity) {
'id' => (int) 2,
'subsite_id' => (int) 1,
'page_id' => (int) 2,
'parentmenuitem_id' => null,
'nav_order' => (int) 2,
'nav_width' => null,
'children' => [
(int) 0 => object(Cake\ORM\Entity) {
'id' => (int) 9,
'subsite_id' => (int) 1,
'page_id' => (int) 9,
'parentmenuitem_id' => (int) 2,
'nav_order' => (int) 1,
'nav_width' => null,
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Children'
},
(int) 1 => object(Cake\ORM\Entity) {
'id' => (int) 10,
'subsite_id' => (int) 1,
'page_id' => (int) 13,
'parentmenuitem_id' => (int) 2,
'nav_order' => (int) 2,
'nav_width' => null,
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Children'
},
(int) 2 => object(Cake\ORM\Entity) {
'id' => (int) 11,
'subsite_id' => (int) 1,
'page_id' => (int) 14,
'parentmenuitem_id' => (int) 2,
'nav_order' => (int) 3,
'nav_width' => null,
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Children'
}
],
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Menuitems'
},
],
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Subsites'
}
]
はずのは –
申し訳ありませんが、はい、私は上記の入力ミス$メニューリストを、持っています。 – Sharon