2013-12-18 33 views
0

視圖

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'sendmessage-form', 
'enableClientValidation'=>true, 
'clientOptions'=>array(
    'validateOnSubmit'=>true, 
), 
)); ?> 
<div class="row"> 
    <?php echo $form->labelEx($model,'receiverType'); ?> 
    <?php echo $form->dropDownList($model,'receiverType',array(1 => 'type1' ,2=>'type2'), 
    array(
     'empty'=>"", 
     'value'=>'1', 
     'ajax' => array(
      'type'=>'POST', 
      'url'=>CController::createUrl('site/type'),    
      'data'=>array('type'=>'js:this.value'), 
      'dataType'=>'html', 
      'update' => '#receiver', 
     ))); ?> 
    <?php echo $form->error($model,'receiverType'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'receiver'); ?> 
    <?php echo CHtml::dropDownList('receiver',$model->receiver,array()); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'subject'); ?> 
    <?php echo $form->textField($model,'subject',array('size'=>60,'maxlength'=>128)); ?> 
    <?php echo $form->error($model,'subject'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'body'); ?> 
    <?php echo $form->textArea($model,'body',array('rows'=>10, 'cols'=>100,'style'=>'width: 60%')); ?> 
    <?php echo $form->error($model,'body'); ?> 
</div> 

<div class="row buttons"> 
    <?php echo CHtml::submitButton('ارسال'); ?> 
</div> 

    <?php $this->endWidget(); ?> 

    </div><!-- form --> 

控制器

public function actionType() 
{ 
    $Type=$_POST["type"]; 
    $contact=Yii::app()->db->createCommand() 
       ->select('id,email') 
       ->from('contact') 
       ->order('parent.email') 
       ->queryAll(); 
    $data=CHtml::listData($contact,'id','email'); 
    if (!empty($data)) { echo '<option value="">choose...</option>'; } 
    foreach($data as $value=>$name) { 
     echo CHtml::tag('option', 
       array('value'=>$value),CHtml::encode($name),true); 
     } 
} 

它工作正常,但是當我改變這一行: 了CHtml :: DROPDOWNLIST( '接收器', $模型 - >接收機,陣列()); 對此: $ form-> dropDownList($ model,'receiver',array()); 它不再工作。 我該如何解決這個問題?

+1

你能更具體什麼「不再工作」對你意味着什麼?是否有錯誤訊息?是不是下拉式渲染? – DaSourcerer

+0

當我選擇receiverType時,接收者下拉列表填充了正確的數據,在我更改該行後,接收者下拉列表保持爲空。 – user3116473

+0

你是什麼意思,它不工作?任何錯誤? – dev1234

回答

0

它不工作的原因是因爲下拉的id不再是#receiver。你有兩個選擇:

  1. 更改ID是更新下來即#{Model_Name}_receiver
  2. 明確通過htmlOptions設置下降的ID下降到#receiver下降的新的ID。

爲了與表單的其他輸入保持一致,我會選擇第一個。

+0

非常感謝。我嘗試第二種解決方案,並且完美地工作但我不知道如何檢查第一個解決方案。我應該將更新更改爲#model_receiver!?((對不起,我是Yii的新手,我不知道該怎麼寫)另一個問題是我應該更改actionType函數嗎? – user3116473

+0

您可以編寫代碼嗎? – user3116473

+0

Stackoverflow isn '你可以編寫代碼**類型的網站,但是,我會告訴你,默認情況下,活動輸入字段的'id'(其中'$ form-> dropDownList(..)'是一個例子)模型ModelA的屬性'attr'是'ModelA_attr'。這裏是API頁面http://yiiframework.com/doc/api/1.1/CHtml#activeDropDownList-detail – topher

-2

做ü有reciever在你的模型...

你必須有

// in a view to use this 
$form->dropDownList($model,'receiver',array()); 

// you should be having this in your 
public $reciever; 
// it should be in your model to use it in view 

,當你調用AJAX

'ajax' => array(
     'type'=>'POST', 
     'url'=>CController::createUrl('site/type'),    
     'data'=>array('type'=>'js:this.value'), 
     'dataType'=>'html', 
     // 'update' => 'data.receiver', 
     'update' => '#{id of reciver element perhaps it will be 
"#sendmessage-form_reciever" 

更新#SendMessage函數,form_reciever這將默認身份證號碼

+0

是的,我有模型接收器。其實我在我的帖子中有錯誤,我糾正它。(更新字段在Ajax是#接收器)。與此它工作正常。當我將CHtml :: dropDownList更改爲$ form-> dropDownList不起作用。 – user3116473