gpt4 book ai didi

javascript - 在 Yii 中弹出到其他表单

转载 作者:行者123 更新时间:2023-11-29 14:55:24 25 4
gpt4 key购买 nike

我是 Yii 框架的初学者。我想在我的 createform 中有一个从我的其他表链接的弹出窗口。这样做的目的是我有一个保管箱,如果没有我想选择的数据。我会先创作。我想在我的表 1 create.php 中有一个弹出框,它将在我的表 2 中获得创建表单。这就是我开始的。这似乎是什么问题?

这是我的 table1 create.php 代码

<?php echo CHtml::link('New Day',"",
array(
'style'=>'cursor:pointer; text-decoration:underline;',
'onClick'=>"{doDay(); $('#dialogDay).dialog('open');}"));?>
<?php
$this->beginWidget('zii.Widgets.jui.CJuiDialog',array(
'id'=>'dialogDay',
'options'=>array(
'title'=>'Add New Day',
'autoOpen'=>false,
'modal'=>true,
'width'=>550,
'height'=>470,
),
));
?>
<div class="divForForm"></div>
<?php $this->endWidget();?>

<script type="text/javascript">
function doDay()
{
<?php echo CHtml::ajax(array(
'url'=>array('day/NewDay'),
'data'=>"js:$(this).serialize()",
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
if(data.status == 'failure')
{
$('#dialogDay div.divForForm').html(data.div);
$('#dialogDay div.divForForm form').submit(doDay);
}
else
{
window.location.href = ".Yii::app()->getBaseUrl().";
}
}",
))?>
return false;

}

</script>

在我的表 2 Controller 中

public function actionNewDay()
{

$model= new Day;
if(isset($_POST['ajax']) && $_POST['ajax']=='day-form')
{
$model->attributes=$_POST['Day'];
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['Day']))
{
$model->attributes=$_POST['Day'];
$name=$model->name;
$mon=$model->mon;
$tue=$model->tue;
$wed=$model->wed;
$thurs=$model->thurs;
$fri=$model->fri;
$sat=$model->sat;
$sun=$model->sun;

$dayassign = new DayAssign();
if($model->save())
{
$dayassign->varName = $name;
$dayassign->varMon = $mon;
$dayassign->varTue = $tue;
$dayassign->varWed = $wed;
$dayassign->varThurs = $thurs;
$dayassign->varFri = $fri;
$dayassign->varSat = $sat;
$dayassign->varSun = $sun;
if($dayassign->save())
{
if(Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'success',
));
}
else{
$url = Yii::app()->getBaseUrl();
Yii::app()->getRequest()->redirect($url);
}
}
}
if(Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'failure',
'div'=>$this->renderPartial('day',array('model'=>$model),true)));
exit;

}
else
$this->render('day',array('model'=>$model,));
}
}

最佳答案

我自己做的。这是代码。

场景我有一个包含类次的日模型,例如。由我的 EmpSched 模型选择的 Night,Morning。假设 EmpSched 想要选择下午类,但是白天模型还没有下午模型,他必须先创建一天并丢失已经插入的输入。

我们希望允许用户从 empsche 的形式创建一天,而无需更改页面

这是我做的。

在我的 Day Controller 中:

    public function actionCreate()
{
$model=new Day;

// Uncomment the following line if AJAX validation is needed
//$this->performAjaxValidation($model);

if(isset($_POST['Day']))
{
$model->attributes=$_POST['Day'];
if($model->save())
{
if(Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'success',
'div'=>"Day successfully added"
));
exit;
}
else
$this->redirect(array('view','id'=>$model->id_day));
}

}
if(Yii::app()->request->isAjaxRequest)
{
echo CJSON::encode(array(
'status'=>'failure',
'div'=>$this->renderPartial('_form',array('model'=>$model),true)));
exit;
}
$this->render('create',array(
'model'=>$model,
));

}

在我的 EmpSched _form.php 中:

</div>
<?php echo CHtml::link('Create day', "", // the link for open the dialog
array(
'style'=>'cursor: pointer; text-decoration: underline;',
'onclick'=>"{addDay(); $('#dialogDay').dialog('open');}"));?>

<?php
$this->beginWidget('zii.widgets.jui.CJuiDialog', array( // the dialog
'id'=>'dialogDay',
'options'=>array(
'title'=>'Create Day',
'autoOpen'=>false,
'modal'=>true,
'width'=>550,
'height'=>470,
),
));?>
<div class="divForForm"></div>

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

<script type="text/javascript">
// here is the magic
function addDay()
{
<?php echo CHtml::ajax(array(
'url'=>array('day/create'),
'data'=> "js:$(this).serialize()",
'type'=>'post',
'dataType'=>'json',
'success'=>"function(data)
{
if (data.status == 'failure')
{
$('#dialogDay div.divForForm').html(data.div);
// Here is the trick: on submit-> once again this function!
$('#dialogDay div.divForForm form').submit(addDay);
}
else
{
$('#dialogDay div.divForForm').html(data.div);
setTimeout(\"$('#dialogDay').dialog('close') \",3000);
}

} ",
))?>
return false;

}

</script>

我希望我能帮助那些在我自己船上的人。

关于javascript - 在 Yii 中弹出到其他表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18584795/

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