Как заполнить раскрывающийся список значениями базы данных в CakePHP - PullRequest
4 голосов
/ 20 февраля 2011

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

Ответы [ 5 ]

4 голосов
/ 21 февраля 2011

Просто, если это связанная модель в вашем контроллере, вы передаете 'list' в find (); торт создаст для вас массив id => value, а помощник по формам точно будет знать, что с ним делать.

Например, скажем, вы хотите получить список категорий для модели продукта, это в вашем контроллере:

$categories = $this->Product->Categories->find('list');
$this->set(compact('categories'));

Затем, по вашему мнению, с помощью помощника по форме, просто создайте элемент select, как обычно для любого ввода:

$form->input('category_id');

Помощник по форме автоматически загрузит переменную $ Categories, которую мы установили с помощью $ this-> set ().

3 голосов
/ 20 февраля 2011

Вы делаете поиск в БД, а затем устанавливаете переменную через $this->set(yourvariable) в контроллере.

В представлении вы используете "yourvariable" в теге select

Заполнить выбор 1

Заполнить выбор 2

Заполнить выбор 3

2 голосов
/ 28 ноября 2013

Существует простой способ сделать это с минимальными усилиями.

 $this->set('arrMain',$this->Post->find('list',
                                            array(
                                                'fields'=>array('id','title')
                                                )));

Будет выводить как ==>

<select id="UserAge" name="data[User][Age]">
<option value="1">The title</option>
<option value="2">A title once again</option>
<option value="3">Title strikes back</option>
1 голос
/ 21 декабря 2016

Пример

в вашем контроллере Класс

$categories = $this->Articles->find('list')->select(['id', 'title'])->toArray();

$this->set(compact('categories')); // pass result dataset to the view

В вашем файле просмотра

<?php echo $this->Form->select('articles_categories_id', $categories); ?>

Источник чтения http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html

1 голос
/ 21 февраля 2011

в контроллере вы делаете:

$this->loadModel('MyModel'); //if it's not already loaded
$options = $this->MyModel->find('all'); //or whatever conditions you want
$this->set('options',$options);

и в представлении

<select...>
  <?php foreach ($options as $option): ?>
    <option value="<?php echo $option['MyModel']['id']; ?>"><?php echo $option['MyModel']['field']; ?></option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...