私はCakePHPプロジェクトに取り組んでおり、特にユーザー、投稿、場所のモデルがあります。ユーザーhasManyLocationとPostはUserに属しているため、LocationはPostに直接関連していません。
これは、Postコントローラーの私のコードです。
public function add() {
if ($this->request->is('get')) {
$this->loadModel('Location');
$this->set('locations', $this->Location->find('all', array('conditions' => array('user_id' => $this->Auth->user('id')))));
}
...
}
そして、これは投稿/追加ビューの私のコードです:
<?php
$i = 0; $j = 0;
foreach ($locations as $location):
$location_names[$i] = $location['Location']['name'];
$i++;
endforeach;
echo "<select name=\"location\" onchange=\"select(this.value)\">";
echo "<option value=\"\">Select a saved location</option>";
foreach ($locations as $location):
echo "<option value=\"" . $location['Location']['latitude'] . "," . $location['Location']['longitude'] . "\">" . $location_names[$j] . "</option>";
$j++;
endforeach;
?>
</select>
Postモデルに検証ルールがあるpost入力の1つに間違った値を入力すると、現在の追加ビューにリダイレクトされ、検証エラーが表示されますが、コントローラーからビューに渡された$locations配列が表示されなくなります。ビューで使用しないでください。次のエラーが発生します。
Notice (8): Undefined variable: locations [APP\View\Posts\add.ctp, line 68]