После обновления с Laravel 4.2 до 5.0 я получаю следующее сообщение почти на каждой странице моего приложения:
InvalidArgumentException в строке UrlGenerator.php 561: Действие ArticlesController @ create не определено.
В моем файле routes.php у меня есть:
Route::get('articles/create', ['as' => 'articles.create', 'uses' => 'ArticlesController@create']); Route::post('articles/create', ['as' => 'articles.create.handle', 'uses' => 'ArticlesController@handleCreate']);
И в моем контроллере:
class ArticlesController extends Controller { public function create() { $input=null; if (Input::old()) { $input = Input::old(); } $tagsJson = Tag::all()->toJson(); $categories = ArticleCategory::all(); return View::make('admin.articles.create', compact(array('tagsJson', 'categories', 'input'))); } public function handleCreate() { $input = Input::all(); if ($input['op']=="preview") { return redirect()->action('ArticlesController@create')->withInput(); } else if ($input['op']=="post") { // } } }
Ошибка, которую я получаю, исходит из этой строки:
return redirect()->action('ArticlesController@create')->withInput();
Любая помощь? Спасибо, Ильяс
Вы получаете эту ошибку, потому что Laravel 5 использует пространство имен по умолчанию. В официальном руководстве по обновлению Laravel 5 говорится о миграции ваших контроллеров:
Поскольку мы не собираемся переходить на полное пространство имен в этом руководстве, добавьте каталог app / Http / Controllers в директиву classmap вашего файла composer.json. Затем вы можете удалить пространство имен из базового класса абстрактного приложения / Http / Controllers / Controller.php. Убедитесь, что ваши мигрированные контроллеры расширяют этот базовый класс.
В файле app / Providers / RouteServiceProvider.php установите для свойства namespace значение null.
Перечислены здесь под «контроллерами».
Последняя строка, вероятно, та, которая решит вашу проблему.
вам нужно определить маршруты для любого созданного URL-адреса, и если вы укажете метод контроллера из ссылок или формы. ссылки на действия зависят от маршрутов.
Когда вы создадите маршрут для этого, он будет работать, и ошибка исчезнет.