2016-09-04 3 views
0

varaj 및 laravel에서 모델 및 경로를 자동으로 바인딩하는 방법이 있는지 알고 싶습니다. 내 말은 laravel에서 내가 할 것, 나는 주어진 ID로 특정 게시물을 업데이트 할, 가정, 그냥이 : 나는 laravel이 자동으로 않기 때문에 포스트 ID를 지정하지 않은Laravel 암시 적 모델 경로 바인딩 및 Vue JS

public function edit(Request $request Post $post) 
    { 

     $post->update($request->all()); 
    // then I will return some view or do some redirect here 

    } 

공지 사항 무대 뒤에서.

내가 vuejs 일부 포스트 데이터와 동일한 기능을 사용하여, 지금까지 학습 한 내용에 따르면, I가 먼저 다음을 수행하여 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

당신은 경로 매개 변수로 게시물 ID를 전달할 수 있습니다

Route::get('posts/{post}/edit', '[email protected]'); 

그래서 자동 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 
    }); 
} 
+0

이 작동합니다. 한 가지 문제가 남았습니다. 게시물의 소유자 만 게시물을 삭제할 수 있는지 확인하는 권한 부여 방법을 사용하고 있지만 403이 표시됩니다. – Mover

+0

403 권한이 없으면 권한이 부여되지 않습니다. 로그인 한 사용자가 게시물 소유자인지 확인해야합니다. – Rifki

+0

네,하지만 브라우저 개발자 로그에서 실제 이벤트 소유자와 사용자가 일치하는지 확인할 수 있습니다. 왜 내가 403을 얻는 지 모르겠다. – Mover

관련 문제