簡體   English   中英

如何使Yii-CActiveForm不將列表項設置為選定?

[英]How to make the Yii-CActiveForm not set a list item to selected?

在Yii應用程序中,我有UserExpert模型( 'expert'=>array(self::BELONGS_TO, 'Expert', 'expert_id'), )。

有一種用於創建/編輯用戶數據的表格。 現在,我想用一個下拉列表來擴展它:

<?php
/**
 * @var $experts Expert[]
 */ 
$expertsDropDownListData = array();
foreach ($experts as $expert) {
    $expertsDropDownListData[$expert->id] = $expert->name;
}
?>
<div class="row">
    <?php
    echo $form->labelEx($user, '', array('label' => Yii::t('app', 'Some text...')));
    ?>
    <?php
    echo $form->dropDownList(
        $user, 'expert[id]', $expertsDropDownListData,
        array(
            'empty' => Yii::t('app', 'Please select an expert.'),
            // 'options' => array('' => array('selected' => 'selected')),
            // 'prompt'=>'Choose One',
        )
    );
    ?>
    <?php echo $form->error($user, 'expert[id]'); ?>
</div>

我希望下拉列表永遠不要有專家條目作為默認條目。 在頁面加載時,應該“選擇”空值。 它適用於沒有相關專家的用戶頁面(在users表中,columnt expert_idNULL )。 但是在具有專家的用戶頁面上,會selected用戶的專家條目。

如何以允許CActiveForm對象選擇antry並顯示沒有預形式selected值而不管/對象關系的表?

您可以在加載后用空值填充屬性$ model-> expert。

// Controller
$user = User::model()->findByPk(1);
...your awesome code here...

// never show a default value
$user->expert=null;

if(isset($_POST)) {
  // $user->expert will be set here with data from view
  $user->attributes = $_POST;
}

...

// View
    <div class="row">
    <?php
    echo $form->labelEx($user, '', array('label' => Yii::t('app', 'Some text...')));
    ?>
    <?php
    echo $form->dropDownList(
        $user, 'expert', CHtml::listData($experts,'id', 'name'),
        array('empty' => Yii::t('app', 'Please select an expert.'),)
    );
    ?>
    <?php echo $form->error($user, 'expert'); ?>
    </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM