gpt4 book ai didi

php - 插入新元素后更新 Yii 下拉列表

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:19 25 4
gpt4 key购买 nike

这是我的代码:

<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(); ?>

Controller 的代码是一个简单的创建函数:

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();

}
}
}

所以,下面是我的解决方案的代码。在 View 中:

<?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,
));
}

最佳答案

您可能有一个添加电话类型的操作(在本例中,我们称之为 phoneType/create)。

当您向该操作发送 ajax 请求以创建您的电话类型时,该操作应返回新创建的电话类型信息。然后,您可以使用 jQuery 将其添加到下拉列表中。

看这个例子:

<?php
// In protected/controllers/PhoneTypeController.php
public function actionCreate($phoneType)
{
$phoneType = new PhoneType;
$phoneType->phone_type = $phoneType;
if ($phoneType->save())
{
echo CJSON::encode(array('value' => $phoneType->id, 'label' => $phoneType->phone_type)); // echos something like {"value":5,"label":"test"}
}
}
?>

对于此示例的其余部分,我将假设您的原始模型(您具有 phone_type 字段的模型)称为 Company(这会影响下面我选择您的 phone_type 下拉列表的 jQuery 代码).

然后您可以在 ajax 函数的成功回调中使用此输出来向您的选择添加新选项(即下拉列表):

jQuery.get( // your 'data' and 'url' here
success: function(data) {
$('#Company_phone_type').append('<option value="' + data.value + '">' + data.label + '</option>');
});

有关如何在 jQuery 中执行此操作的更多信息,请参阅 Adding options to a select using Jquery/javascript .

关于php - 插入新元素后更新 Yii 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17983180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com