1

モーダルでバインドするドロップダウンがあります。以下のコードを使用します。

public function getYears()
{
    for ($i=date('Y');$i>=2012;$i--)
    {
            $years["{$i}"]="{$i}";
    }
   return $years;                  
}

そして私の見解は:

 <div class="row">
 <?php echo $form->labelEx($model,'year'); ?>
 <?php echo CHtml::activedropDownList($model,'years',$model->getYears(),array('class'=>'myClass')); ?>
 <?php echo $form->error($model,'year'); ?>

 <?php echo $form->labelEx($model,'name'); ?>
 <?php
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=>'name',
'source'=>$this->createUrl('reports/autocompleteTest'),
'options'=>array(
        'delay'=>300,
        'minLength'=>2,      
        'showAnim'=>'fold',
),
));
?>
  <?php echo $form->error($model,'name'); ?> 

  <?php echo $form->labelEx($model,'Status'); ?>
  <?php echo $form->dropDownList($model,'is_active',array("1"=>"Active","0"=>"InActive")); ?> 
  <?php echo $form->error($model,'Status'); ?>

   </div>
<div class="summary_btn buttons"> <?php echo CHtml::submitButton('Search'); ?> </div>
<?php $this->endWidget(); ?>

ボタンをクリックするSearchと、ページがポストバックされます。そして、ドロップダウン リストを再バインドします。

ボタンをクリックした後、ドロップダウンで選択した値を保持する方法がわかりません。

4

2 に答える 2

1

setAttributesからモデルを取得する必要がある$_POSTため、Yii はモデル値をフォーム コンポーネントに再割り当てします。モデルを保存する場合と同様ですが、保存は行いません。

public function someAction()
{
    // load model somewhere
    $model = $this->_loadModel();
    if($_POST['modelName'])
    {
        $model->setAttributes($_POST['modelName']);
    }
    $this->render('someView', ['model' => $model]);
}

編集:

コメントの後、ゲッターとセッターのチュートリアルで説明されているように、getYearsYii が attribute のゲッターとして使用するメソッドを持つモデルがあることに気付きました。たとえば、名前を変更する必要があります。モデルに現在の値を保持する属性があり、HarryFink answer のようなルールがあることを確認してください。yearsgetYearRangesyearsyears

于 2013-08-14T12:11:08.470 に答える