これが私のコードです:
<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 を新しいタイプで更新したいと考えています。
私はそれをよくグーグルで検索しますが、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,
));
}