我想知道是否有一种方法可以自动绑定vuejs和laravel中的模型和路径,就像只使用laravel一样。我的意思是,假设,我想用给定的id更新某个帖子,在laravel我会这样做:
public function edit(Request $request Post $post)
{
$post->update($request->all());
// then I will return some view or do some redirect here
}
请注意,我没有必要指定帖子ID,因为laravel会在幕后自动执行此操作。
根据我到目前为止所学到的,使用与vuejs中的一些发布数据相同的函数,我首先通过执行以下操作来获取id:
public function edit(Request $request)
{
$post = $request->input('id');
$post = Post::where('id', $id)->first();
// Then I perform other logic here
// then I will return some view or do some redirect here
}
请注意,该功能不再接受任何帖子模型。如果我尝试添加模型作为输入参数并调用vuejs中的某些编辑功能确实达到我在某个控制器中点击编辑的路径,我得到内部服务器错误500。 我使用的代码是这样的:
public function edit(Request $request Post $post)
{
// Then I perform other logic here
// then I will return some view or do some redirect here
}
//vuejs method
editPost(post){
var postData = {id: this.post.id};
this.$http.post('edit/'+ postData).then((response)=>
{
//Some logic goes here including catch part
});
}
答案 0 :(得分:1)
您可以将帖子ID作为路线参数传递:
Route::get('posts/{post}/edit', 'PostController@edit');
因此它会自动将模型实例注入post
参数。
public function edit(Request $request, Post $post)
{
$post->update($request->all());
}
然后在你的vue中你可以这样做:
editPost(post) {
let postId = post.id;
let postData = {
title: '',
content: ''
};
this.$http.post('posts/' + postId + '/edit', postData).then((response) => {
//Some logic goes here including catch part
});
}