2016-09-04 4 views
0

Я хочу знать, есть ли способ автоматически привязывать модели и маршруты в vuejs и laravel так же, как один будет делать только с laravel. То, что я имею в виду, предполагая, я хочу, чтобы обновить определенную должность с заданным идентификатором В Laravel я буду делать только это: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 

    } 

Обратите внимание, что я не должен указать почтовый идентификатор, потому что Laravel автоматически делает это за кулисами.

По, что я узнал до сих пор, используя ту же функцию с некоторыми почтовыми данными vuejs, я сначала получить идентификатор, выполнив следующие действия:

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

Вы можете передать идентификатор сообщения в качестве параметра маршрута:

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

так будет автоматически вводить экземпляр модели для post параметра.

public function edit(Request $request, Post $post) 
{ 
    $post->update($request->all()); 
} 

Тогда в вашем вю вы можете сделать так:

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

Это работает. У меня есть одна проблема, я использую метод authorize, чтобы проверить, что только владельцы сообщений могут удалить сообщение, но я получаю сообщение 403 – Mover

+0

Когда вы получаете 403, это означает, что вы не авторизованы. Вы должны убедиться, что зарегистрированный пользователь является владельцем почты. – Rifki

+0

Да, но я могу подтвердить из журналов разработчиков браузера, что фактический владелец события и пользователь совпадают. Я не знаю, почему я получаю 403 – Mover

Смежные вопросы