使用CakePHP中的FormHelper创建"选择"列表框

joe*_*oec 6 cakephp formhelper

我有两个型号,CategoryPoint.关联定义为:

Category hasMany Point
Point belongsTo Category
Run Code Online (Sandbox Code Playgroud)

我想在添加Points到我的数据库时,能够从一个<select>框中选择它所属的类别,以及其余的表单数据.

我需要在哪个set类别列表中,我该怎么做?我将如何制作选择框?

我认为可以完成

$form->input('categorieslist',array('type'=>'select')); //categorieslist needs
                                                        //setting somewhere.
Run Code Online (Sandbox Code Playgroud)

Abb*_*ant 7

还要概括一下:

在可以访问表单助手的视图中

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

以上将使用两个选项呈现选择输入.您也可以将空选项作为第一项.传递值true只会将带有空值的空选项附加到HTML中呈现的选项的开头.

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

您可以将字符串传递给"空"键,以使其显示自定义文本作为空选项的关键字段.

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

最后一个示例,您还可以使用所选键预选一个选项.该值应该匹配的选择选项,而不是关键之一.

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

从模型

Model->find( 'list', array( ... ));将始终返回格式化的数组,以便与选择框选项一起使用.如果将数据传递给存储在具有小写复数模型名称的变量中的视图,即,( $this->set( 'categories', $categories );您将通过使用视图中的表单帮助程序并向其传递相同模型的数据索引,自动生成相关模型的下拉列表以"_id"为后缀的单数形式的名称.

阿齐兹在#2 的答案是自动化踢的例子.


Azi*_*ziz 6

在控制器中:

$categories = $this->Point->Category->find('list');
$this->set(compact('categories'));
Run Code Online (Sandbox Code Playgroud)

在视图中:

$form->input('category_id',array('type'=>'select'));
Run Code Online (Sandbox Code Playgroud)