Laravel Implicit Model Route Binding和Vue JS

时间:2016-09-04 12:53:33

标签: php laravel-5.2 vue.js

我想知道是否有一种方法可以自动绑定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

  });
 }

1 个答案:

答案 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
    });
}