我已经为我的网站实现了更新和创建功能。
我有一个物品页面。在索引页上,我显示了所有项目,并且有一个创建按钮用于创建新项目,每个项目都有一个更新按钮用于更新特定项目。
创建和更新表单使用ajax调用显示在索引页上的项列表下面,我调用actionUpdate和actionCreate并使用renderPartial呈现索引页上的表单。如果更新或创建成功,则重新加载索引页。
我不想重载整个页面,而只想重载项目列表。
下面是我的create动作的代码片段:
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
作为OP想要给出逻辑解决方案,我给出了这个答案。
第一步:
在单击Create Button时,将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
与你返回的一个。也就是说,它会在不重新加载