2014-09-12 3 views
3

Я новичок в Laravel, поэтому у меня есть проект, простой CRUD, но метод delete не работает, когда я пытаюсь удалить данные, и я действительно не знаю почему. Это ошибка:Laravel 4.2 MethodNotAllowedHttpException при удалении

Ошибка:

throw new MethodNotAllowedHttpException($others); 

Контроллер:

public function destroy($id) 
{ 
    $project = Project::find($id); 
    if($project->user_id==Auth::id()) { 
     $project->delete(); 
     return Redirect::to('/'); 
    } else { 
     Session::flash('message', 'You can't delete this!'); 
     return Redirect::to('/'); 
    } 
} 

Вид:

{{Form::open(array('url' => 'project/destroy/'.$p->id, 'method' => 'DELETE'))}} 
    {{Form::submit("Delete", array('class' => 't2tButton text-center'))}} 
{{Form::close()}} 

Маршруты:

Route::post('/project/destroy/{id}', "[email protected]"); 
+0

Вы уверены, что PHP двигатель не выдает ошибку относительно синтаксиса? Это одно: «Вы не можете удалить это!» - вы должны обернуть это жало в двойные кавычки '' ''! – Yang

+0

Хорошая точка @bad_boy, или избежать '' 'in' can't', как этот 'can \ 't' – Dan

ответ

5

У вас есть множество маршрутов для POST, но не для DELETE.

Попробуйте добавить это к вашим маршрутам:

Route::delete('/project/destroy/{id}', "[email protected]");

Или вы могли бы изменить метод POST и сохранить маршрут, как есть, но держать его RESTful, вероятно, лучше, чтобы изменить DELETE.

+0

Точно, это была проблема hahahaa, которую я только что разместил, спасибо anyways =). –

+0

@Oscar Тогда примите этот ответ – Yang

+0

@bad_boy ему нужно подождать не менее 15 минут ... но, пожалуйста, примите одно время, если это помогло ... спасибо – Dan

0

Я просто понял ответ, ошибка на этой линии в маршрутах:

Route::delete('/project/destroy/{id}', "[email protected]"); 

метод маршрута должен быть DELETE

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