我正在尝试从“假期”表中为列名称创建一个下拉菜单。但是我太笨了,无法正常工作。
我已经尝试了人们写的一些东西,但是其中大多数都有第二个数据库。但是我只有一个。
我的目标是显示“假日名称”列中的所有名称,因此,如果创建一个新的假日,我只需从“下拉菜单”中获取日期名称,而不必每次都写下来。
HolidaysController.php
public function index()
{
$holidays = $this->paginate($this->Holidays);
$this->set(compact('holidays'));
$name =$this->name->find('list');
$this->set(compact('name'));
}
假期add.ctp
<?php
echo $this->Form->control('date', array('label' => __('Datum', true)));
echo $this->Form->control('name', ['options' => $name, 'empty' => true]);
?>
我以为他现在会向我显示假期名称的下拉列表,但我只有一个正常字段并收到错误消息:
通知(8):未定义的变量:名称[APP / Template \ Holidays \ add.ctp,第19行]
我可能在这里错过了一些非常基本的东西,我还在学习编码,所以如果我错过了任何信息,您需要,请告诉我。
编辑:
编辑后我的添加功能
HolidaysController
public function add()
{
$name =$this->name->find('list');
$this->set(compact('name'));
$holiday = $this->Holidays->newEntity();
if ($this->request->is('post')) {
$holiday = $this->Holidays->patchEntity($holiday, $this->request->getData());
if ($this->Holidays->save($holiday)) {
$this->Flash->success(__('Der Feiertag wurde gespeichert.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Der Feiertag wurde nicht gespeichert. Bitte, versuchen sie es erneut.'));
}
$this->set(compact('holiday'));
}
答案 0 :(得分:0)
您必须在add()方法中找到并设置列表,例如:
public function add()
{
// your add code here .. then:
$name =$this->Holidays->find('list');
$this->set(compact('name'));
}
默认情况下,每个控制器方法都有自己的视图模板:
index() >> index.ctp
add() >> add.ctp
edit() >> edit.ctp
myCustomMethod() >> my_custom_method.ctp
// ...
编辑:
如果我将您的代码添加到函数add()中,则会出现错误:调用成员 在字符串上使用find()函数。
我从您的问题中复制代码。但是您必须更新:
从:$this->name->find('list');
到
$this->Holidays->find('list', [
'keyField' => 'name',
]);