Yii 中的列表到下拉列表

List to DropDown list in Yii

请帮助使用此代码:

<ul class="activity-projects">
    <?php foreach ($ownProjects as $userProject) : ?>
    <li>
        <a class="<?php echo ($userProject->id == $project_id) ? 'active' : '';?>"
            href="<?php echo Yii::app()->createUrl('user/activity', array(
                'user_id'=>$user->id,
                'project_id'=>$userProject->id,
                'date'=>$date)
            ); ?>"><?php echo $userProject->name; ?></a>
    </li>
    <?php endforeach; ?>
    <?php foreach ($projects as $userProject) : ?>
    <li>
        <a class="<?php echo ($userProject->project_id == $project_id) ? 'active' : '';?>"
            href="<?php echo Yii::app()->createUrl('user/activity', array(
                'user_id'=>$user->id,
                'project_id'=>$userProject->project->id,
                'date'=>$date)
            ); ?>"><?php echo $userProject->project->name; ?></a>
    </li>
    <?php endforeach; ?>
</ul>

如何将其更改为下拉列表,使用 CHtml::dropDownList。感谢收看!

首先,您需要像这样定义一个键值数组:

$options = array();
<?php foreach ($ownProjects as $userProject) 
    array_push($options, array($userProject->id => $userProject->name));
?>

 echo CHtml::dropDownList('seletName', '1', $options);

这将生成一个带有 "seletcName" 名称的 html <select> 标签。并且还将选择值为“1”的选项。您可以为第一个和第二个参数使用您想要的值。 您也可以使用 CActiveForm#dropDownList 来达到这个目的。

在您的表单中,使用表单 dropDownList() 函数。

<?php echo $form->dropDownList(
               $model,
               'project_id',
               CHtml::listData(OwnProjects::model()->findAll(),
                   'id', 'name'),
               array('empty' => '(Select project)','class'=>"form-control")
          );
?>

从您的示例来看,OwnProjects 本身并不是一个模型,而是模型的一个子集。您可以自定义查询

<?php echo $form->dropDownList(
               $model,
               'project_id',
               CHtml::listData(OwnProjects::model()->findAllByAttributes(array('user_id'=> Yii:app()->user->id),
                   'id', 'name'),
               array('empty' => '(Select project)','class'=>"form-control")
          );
?>

这个解决方案终于帮到我了:

<?php  $options = array();
  foreach ($projects as $userProject) :
    $options[$userProject->id] = $userProject->project->name;
  endforeach;

  echo CHtml::dropDownList('selectName', '1', $options); 
?>