2015-12-24 3 views
0

Я задаю очень простой вопрос, и я искал более двух часов, но все же я не смог его исправить. Я новичок в laravel и пытаюсь прочитать их пример для Tasks. Но некоторые, как удаление не работает. Ниже мой код маршрута:привязка модели Laravel не работает для удаления

Route::delete('/task/{task}', function(\AltafBlog\Task $task) { 
    $task->delete(); 
    return redirect('/'); 
}); 

И ниже моя форма для удаления:

<form action="{{url('/task', [$task->id])}}" method="post"> 
    {{csrf_field()}} 
    {{method_field('DELETE')}} 
    <button class="btn btn-danger">Delete</button> 
</form> 

Теперь, когда я нажимаю на кнопку Удалить, он не удаляет элемент в таблице. Кроме того, я не получаю сообщение об ошибке. Добавление новых элементов и их перечисление работают нормально. Я не уверен, что я делаю неправильно. Кто-нибудь может предположить, что там происходит?

Обновление: После обновления до laravel 5.2 привязка модели работает, но валидатор не работает в почтовом маршруте. пост маршрут, как показано ниже:

Route::post('/task', function(Request $request) { 
$validator = Validator::make($request->all(), [ 
    'title' => 'required|max:255', 
]); 
if($validator->fails()) 
{ 
    return redirect('/')->withInput()->withErrors($validator); 
} 
    $task = new Task(); 
    $task->title = $request->title; 
    $task->active = 1; 
    $task->save(); 
    return redirect('/'); 
}); 

Спасибо

+0

Вы получаете '$ task' экземпляр в функции обратного вызова? – xAoc

+0

идентификатор задачи, который вы передаете, но не используете на маршруте – vijaykumar

+2

@ vijay4vijju, если он использует laravel 5.2, существует неявное связывание – xAoc

ответ

1

Проблема в Laravel версии. Laravel 5.1.24 не имеет неявных привязок.

Итак, если вы хотите использовать его, вы должны использовать (или обновить) Laravel 5.2. * Upgrading To 5.2.0 From 5.1

0

Я считаю, что может быть несколько причин, почему это не будет работать.

Во-первых, когда ваш параметр $ task-id вытягивается через ваш маршрут, это будет переменная $ task. Затем вы переписываете эту переменную с экземпляром задачи. Затем вы запускаете метод удаления, и он не будет вызывать ошибку. Попробуйте изменить свой код к следующему

Ваш маршрут

Route::delete('/task/{taskID}', function(\AltafBlog\Task $task, $taskID) { 
    $task->find($taskID); 
    $task->delete(); 
    return redirect('/'); 
}); 
0

Нет необходимости добавлять ->all() после $request.

Ваш код должен выглядеть следующим образом:

$validator = Validator::make($request, [ 
    'title' => 'required|max:255', 
]); 

Или вы можете попробовать это:

$this->validate($request, [ 
    'title' => 'required|max:255', 
]); 
Смежные вопросы