Создание 'избранного' использования полей списков FormHelper в CakePHP

У меня есть две модели, Category и Point. Ассоциации определяются как:

Category hasMany Point
Point belongsTo Category

Я хотел бы при добавлении Points к моей базе данных чтобы смочь выбрать категорию это принадлежит от a <select> поле, наряду с остальной частью данных формы.

Где я должен был бы set список категории и как я мог сделать это? И как я произвел бы избранное поле?

Я предполагаю, что это могло быть, покончили

$form->input('categorieslist',array('type'=>'select')); //categorieslist needs
                                                        //setting somewhere.
6
задан Peter Mortensen 2 June 2012 в 22:40
поделиться

2 ответа

В контроллере:

$categories = $this->Point->Category->find('list');
$this->set(compact('categories'));

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

$form->input('category_id',array('type'=>'select'));
6
ответ дан 8 December 2019 в 18:34
поделиться

Также для обобщения:

В представлении с доступом к помощнику формы

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'key1' => 'val1',
            'key2' => 'val2',
        ),
    ));
?>

В приведенном выше примере будет отображаться выборка ввода с двумя параметрами. Вы также можете поместить пустой вариант в качестве первого элемента. Передача значения true просто добавит пустой параметр с пустым значением в начало параметров, отображаемых в HTML.

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'key1' => 'val1',
            'key2' => 'val2',
        ),
        'empty' => true,
    ));
?>

Вы можете передать строку в «пустой» ключ, чтобы он отображал настраиваемый текст в качестве ключевого поля для пустого параметра.

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'California' => 'CA',
            'Oregon' => 'OR',
        ),
        'empty' => 'choose a state',
    ));
?>

Последний пример, вы также можете предварительно выбрать опцию с помощью выбранной клавиши. Значение должно соответствовать значению одной из опций выбора, а не ключу.

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'California' => 'CA',
            'Oregon' => 'OR',
        ),
        'empty' => 'choose a state',
        'selected' => 'California',
    ));
?>

Из модели

Модель-> find ('list', array (...)); всегда будет возвращать массив, отформатированный для использования с параметрами поля выбора. Если вы передадите в представление данные, хранящиеся в переменной с наименованием модели множественного числа в нижнем регистре, то есть ($ this-> set ('Categories', $ Categories); , то вы автоматически создадите раскрывающиеся списки для связанных моделей, используя помощник формы в представлении и передавая ему индекс данных с тем же именем модели в единственном числе с суффиксом «_id».

Ответ Азиза на № 2 является примером этого автоматического действия .

7
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: