$message = $this->Messages->newEntity();
$message = $this->Messages->patchEntity($message, $this->request->data);
if ($this->Messages->save($message)) ……
<?= $this->Form->create($message) ?>
<fieldset>
<legend><?= __('Add Message') ?></legend>
<?php
echo $this->Form->input('members_id', ['options' => $members]);
echo $this->Form->input('title');
echo $this->Form->input('comment');
?>
</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>
echo $this->Form->input('members_id', ['options' => $members]);外部キーと同じ、'members_id'という名前で用意しています。第2引数に、'options'として$membersを指定していますね。この変数は、コントローラー側で、$this->Messages->Members->findを使って取り出したものです。Messages内のMembersにあるfindを呼び出す、というところがちょっと変わっています。
$this->displayField('name');このdisplayFieldで指定した項目の値が、listでは配列として取り出されるようになっているのです。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
public function add() { $message = $this->Messages->newEntity(); if ($this->request->is('post')) { $message = $this->Messages->patchEntity($message, $this->request->data); if ($this->Messages->save($message)) { $this->Flash->success(__('The message has been saved.')); return $this->redirect(['action' => 'index']); } else { $this->Flash->error(__('The message could not be saved. Please, try again.')); } } $members = $this->Messages->Members->find('list', ['limit' => 200]); $this->set(compact('message', 'members')); $this->set('_serialize', ['message']); }
<< 前へ | 次へ >> |