从数据库创建下拉菜单

时间:2019-05-27 08:02:44

标签: cakephp drop-down-menu

我正在尝试从“假期”表中为列名称创建一个下拉菜单。但是我太笨了,无法正常工作。

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

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

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'));
    }

1 个答案:

答案 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',
]);