我在Yii是全新的,所以,如果這個問題的答案有點微不足道,不好意思。在插入新元素後更新Yii Dropdownlist [已解決]
這裏是我的代碼:
<p>
<?php echo $form->labelEx($model,'phone_type'); ?>
<span class="field">
<?php echo $form->dropDownList($model,'phone_type',
CHtml::listData(PhonesTypes::model()->findAll(),
'id','type')); ?>
<?php echo $form->error($model,'phone_type'); ?>
</span>
</p>
將會有一個按鈕來註冊新的手機類型。所以,在表單的子表單之後,這將在CJUiDialog中,我希望上面的dropDownList用新類型更新,而不刷新頁面。
我google了很多,但我只找到有關「依賴下拉」Yii的事情。
解決此問題的更好方法是什麼?有沒有像$.fn.cgridview.update
?
這裏的對話框代碼:
<?php $this->endWidget('zii.widgets.jui.CJuiDialog');
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'dialog-crud',
'options'=>array(
'title'=>'Create new Phone Type',
'autoOpen'=>false,
'modal'=>true,
'width'=>1080,
'height'=>820,
'resizable'=>false
),
));
?>
<iframe src="http://myapp/phone_types/create" width="100%" height="100%"></iframe>
<?php $this->endWidget(); ?>
和控制器的代碼,是一個簡單的創建功能:
public function actionCreate(){
$model = new PhoneType;
if(isset($_POST['PhoneType'])){
$model->attributes = $_POST['PhoneType'];
if($model->save()){
//----> some suggestion here? echo CHtml::script("");
Yii::app()->end();
}
}
}
所以,下面是我的解決方案的代碼。 在視圖:
<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'dialog',
'options'=>array(
'title'=>'Phone Types',
'autoOpen'=>false,
'modal'=>true,
'width'=>1080,
'height'=>820,
'resizable'=>false
),
));
?>
<iframe src="phoneTypes/create" id="cru-frame" width="100%" height="100%"></iframe>
<?php $this->endWidget(); ?>
在我PhoneTypesController:
public function actionCreate(){
$model = new PhoneTypes;
if(isset($_POST['PhoneTypes'])){
$model->attributes = $_POST['PhoneTypes'];
if($model->save()){
echo CHtml::script("
window.parent.$('#dialog').dialog('close');
window.parent.$('#Phone_types_id').append('<option value=".$model->id." >'+'".$model->type."'+'</option>');
");
Yii::app()->end();
}
}
$this->render('create',array(
'model'=>$model,
));
}
感謝您的幫助!
也許在對話框中發佈您的代碼,並且在這種情況下控制器操作將會很有幫助。 –
嗨,@SamuelLiew。謝謝你的時間。我把上面的控制器和對話框的代碼。 –