我已实施更新并为我的网站创建功能。
我有一个项目页面。在索引页面上,我显示了所有项目,并且有一个创建按钮,用于创建新项目和针对每个项目的更新按钮,以更新特定项目。
创建和更新表单使用ajax调用显示在索引页面上的项目列表下方,我调用actionUpdate和actionCreate并使用renderPartial在索引页面上呈现表单。
如果更新或创建成功,则重新加载索引页。
我不想重新加载整个页面,只是重新加载项目列表。
以下是我的创建操作的代码段:
public function actionCreate() {
$model = new Item();
if( $model->load( Yii::$app->request->post() ) && $model->save() )
{
$items= Item::find()->all();
return $this->redirect(['index', 'items' => $items]);
exit;
}
return $this->renderPartial('createUpdate', ['item' => $model, 'title' => "Create item" ]);
}
有没有办法实现这个目标?
-Nishi
答案 0 :(得分:0)
由于OP希望给出合理的解决方案,我给出了这个答案。
第1步:
点击“创建”按钮时,其ID为trigger
,并在您的视图中显示以下脚本。
<script>
$(document).ready(function(){
$("#trigger").click(function(){
$.ajax({url: "actionCreate", success: function(result){
$("#result").html(result);
}});
});
});
</script>
因此,无论何时单击“创建”按钮,它都将调用actionCreate
函数。
第2步:
根据您的控制器,它将创建条目,在这里您将返回更新的列表作为表本身。
即,您可以将表作为变量获取并在内部执行foreach
并在控制器本身中构建一个表并将其返回到视图。
根据jquery中的这一行$("#result").html(result);
它会将div result
替换为你返回的那个..也就是说,它会在你的视图中为你提供更新/新列表而不重新加载< / p>