Cakephp 从数据库创建下拉菜单

Cakephp 从数据库创建下拉菜单,cakephp,drop-down-menu,Cakephp,Drop Down Menu,我正在尝试从表中为列名创建一个下拉菜单。但我太笨了,不能让它工作 我已经尝试了一些人们写的东西,但大多数都有第二个数据库。但我只有一个 我的目标是显示“假日名称”列中的所有名称,因此,如果我创建了一个新假日,我只需从下拉菜单中获取日期名称,而无需每次都将其记录下来 HolidaysController.php 公共功能索引() { $holidays=$this->paginate($this->holidays); $this->set(紧凑型(“假日”); $name=$this->name

我正在尝试从表中为列名创建一个下拉菜单。但我太笨了,不能让它工作

我已经尝试了一些人们写的东西,但大多数都有第二个数据库。但我只有一个

我的目标是显示“假日名称”列中的所有名称,因此,如果我创建了一个新假日,我只需从下拉菜单中获取日期名称,而无需每次都将其记录下来

HolidaysController.php

公共功能索引()
{
$holidays=$this->paginate($this->holidays);
$this->set(紧凑型(“假日”);
$name=$this->name->find('list');
$this->set(压缩('name'));
}
假日附加


我原以为他现在会给我看一个假日名称的下拉列表,但我只有一个正常字段,得到了错误:

注意(8):未定义变量:name[APP/Template\Holidays\add.ctp,第19行]

我可能在这里遗漏了一些非常基本的东西,我还在学习编码,所以如果我遗漏了任何信息,你需要的话,请告诉我

编辑:

编辑后我的添加功能

度假管理员

公共函数添加()
{
$name=$this->name->find('list');
$this->set(压缩('name'));
$holiday=$this->Holidays->newEntity();
如果($this->request->is('post')){
$holiday=$this->Holidays->patchEntity($holiday,$this->request->getData());
如果($this->Holidays->save($holiday)){
$this->Flash->success('Der Feiertag wurde gespeichert');
返回$this->redirect(['action'=>'index']);
}
$this->Flash->error('Der Feiertag wurde nicht gespeichert.bite,versuchen sie es ernut');
}
$this->set(紧凑型(“假日”);
}

您必须在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',
]);

必须在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',
]);

如果我将您的代码添加到函数add()中,我会得到一个错误:调用字符串上的成员函数find()。我从您的问题中复制代码,并告诉您如何执行。我的答案更新了。我现在终于明白它是如何工作的了。我现在可以从数据库中选择名称。现在我只需要找出为什么它保存为一个数字,而不是假日名称。谢谢你的帮助。它另存为一个数字,因为你的列表中有数字ID作为键。我已经用一个简单的解决方案更新了上面的答案。如果我将您的代码添加到函数add(),我会得到一个错误:调用字符串上的成员函数find()。我从您的问题中复制代码,并告诉您如何操作。我的答案更新了。我现在终于明白它是如何工作的了。我现在可以从数据库中选择名称。现在我只需要找出为什么它保存为一个数字,而不是假日名称。谢谢你的帮助。它另存为一个数字,因为你的列表中有数字ID作为键。我已经用一个简单的解决方案更新了上面的答案。