Форма действия в Laravel

У меня проблема с формой в Laravel,
Итак, моя структура проекта:

controllers/
administration/
NewsController.php

в NewsController у меня есть вызов метода: postCreate ():

 public function postCreate(){
$validator = Validator::make(Input::all(), \News::$rules);
if($validator->passes()){
$news = new \News();
$news->title = Input::get('title');
$news->content = Input::get('content');
$news->author = Input::get('author');
$news->type = Input::get('type');

$image = Input::file('file');
$filename = time().".".$image->getClientOriginalExtension();
$path = public_path('content/images/' . $filename);
Image::make($image->getRealPath())->resize(468,249)->save($path);
$news->image = 'content/images/'.$filename;
$news->save();

return Redirect::to('/administration/news/add')
->with('message','Succes');
}
return Redirect::to('/administration/news/add')
->with('message','Error')
->withErrors($validator)
->withInput();
}

Моя форма имеет действие:

{{ Form::open(array('url'=>'administration/news/create', 'files'=>true)) }}
{{ Form::close() }}

Мой маршрут:

Route::post('/administration/news/create', array('uses'=>'App\Controllers\Administration \NewsController@postCreate'));

Но когда я отправляю, я получаю сообщение об ошибке:

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

Я не понимаю, где моя проблема.

2

Решение

Небольшая настройка …. забудьте ручное создание адресов.

В маршрутах .php:

Route::post('/administration/news/create',
array('uses'=>'App\Controllers\Administration\NewsController@postCreate',
'as' => 'news.post.create'));

Ввиду:

{{ Form::open(array('url'=>route('news.post.create'), 'files'=>true)) }}

нет необходимости запоминать любой из этих адресов.

1

Другие решения

У вас есть пробел в вашем коде. Ваш маршрут должен быть:

Route::post('/administration/news/create', array('uses'=>'App\Controllers\Administration\NewsController@postCreate'));

Кроме того, хотя laravel предоставляет вам стандартное действие POST, всегда лучше добавить действие POST к вашей форме.

'method' => 'post'
1

По вопросам рекламы [email protected]