Создание выпадающего меню из базы данных - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь создать выпадающее меню из таблицы Праздники для имени столбца.Но я слишком туп, чтобы заставить его работать.

Я уже попробовал некоторые вещи, которые люди написали, но у большинства из них есть вторая база данных.Но у меня есть только один.

Моя цель - показать все имена из столбца «Название праздника», поэтому, если я создаю новый праздник, я просто получаю название даты из выпадающего меню и не нужно записывать его каждыйвремя.

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]

Я, вероятно, здесь упускаю что-то очень простое, я все еще изучаю кодирование, поэтому, если я пропустил какую-либо информацию, вам нужно, просто дайте мне знать.

РЕДАКТИРОВАТЬ:

Моя функция добавления послеedit

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 голосов
/ 27 мая 2019

Вы должны найти и установить список в вашем методе 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
// ...

EDIT:

Если я добавлю ваш код в функцию add (), я получу сообщение об ошибке: вызов участника Функция find () для строки.

Я копирую код из вашего вопроса. Но вы должны обновить:

от: $this->name->find('list'); до

$this->Holidays->find('list', [
    'keyField' => 'name',
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...