yii 如何使用Chtml::DropDownList()

7cjasjjr  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(213)

我现在是一个yii framework / php的新手。我需要一些帮助来创建这个Chtml::DropDownList。
http://www.yiiframework.com/doc/api/1.1/CHtml#dropDownList-detail

Chtml::dropDownList($name, $select, $data)

我知道$data是要从数据库加载的数据数组。
但是有没有人能给我解释一下$name和$select是如何真正工作的。我很难找到在一个非常愚蠢的水平上解释这一点的文档。
我设法让这段代码工作,但我更喜欢使用Chtml::dropdownlist。

<div class="row">
    <?php
        echo $form->dropDownList($model, 'id',
        Chtml::listData(UsersTeam::model()->findAllByAttributes(array('coachId'=>$model->id)), 'id', 'teamName'),
        array('empty'=>'Select Team'))
    ?>
</div>

我希望能够显示当前用户所登记的所有teamName。
我目前在User的模型视图中显示这些信息,但是我需要的信息来自UserTeam,它保存了用户的团队。

'memberOfTeams' => array(self::MANY_MANY, 'UsersTeam', '{{teamMembers}}(userId, teamId)'),     
        'coachOfTeams' => array(self::HAS_MANY, 'UsersTeam', 'coachId'),
yks3o0rb

yks3o0rb1#

$name是它将具有的name="mySelect"表单值(如果作为表单发送,则将传递的值,即$_POST['mySelect'])。
$select是预先选择的ID。假设您有一个数组...

$options = array('12' => 'Twelve', '10' => 'Ten');

您的下拉列表如下所示...

echo CHtml::dropDownList('mySelect', '12', $options);

那么'Twelve'将是下拉列表中的预选项,$_POST['mySelect']将是发送表单时传递的值。
可以使用CHtml::dropDownList接受的第四个参数向每个<option>标记添加其他html选项,如下所示:

$htmlOptions = array(
    // adds to the select element
    'style' => 'cursor: pointer;',
    // adds to the actual options
    'options' => array(
        '12' => array('title' => '12')
    )
);

以及将所述调用更新为:

echo CHtml::dropDownList('mySelect', '12', $options, $htmlOptions);

完成的列表如下所示:

<select name="mySelect" style="cursor: pointer;">
    <option value="12" selected="selected" title="12">Twelve</option>
    <option value="10">Ten</option>
</select>
az31mfrm

az31mfrm2#

您可以轻松地使用CHtml::activeDropDownList执行相同的操作。
因此,您的代码将如下所示:

<div class="row">
    <?php
        echo CHtml::activeDropDownList($model, 'id',
        Chtml::listData(UsersTeam::model()->findAllByAttributes(array('coachId'=>$model->id)), 'id', 'teamName'),
        array('empty'=>'Select Team'))
    ?>
</div>

相关问题