Действие Laravel не определено

После обновления с Laravel 4.2 до 5.0 я получаю следующее сообщение почти на каждой странице своего приложения:

InvalidArgumentException в строке UrlGenerator.php 561: Action ArticlesController @create not defined.

В моем файле routes.php у меня есть:

Route::get('articles/create', ['as' => 'articles.create', 'uses' => '[email protected]']);
Route::post('articles/create', ['as' => 'articles.create.handle', 'uses' => '[email protected]']);

И в моем контроллере:

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('[email protected]')->withInput();
        } else if ($input['op']=="post") {
            //
        }

    }
}

Ошибка, которую я получаю, исходит из этой строки:

return redirect()->action('[email protected]')->withInput();

Любая помощь? Спасибо, Илиас

Ответ 1

Вы получаете эту ошибку, потому что Laravel 5 использует пространство имен по умолчанию. В официальном руководстве по обновлению Laravel 5 говорится о миграции ваших контроллеров:

Поскольку мы не собираемся мигрировать в полное пространство имен в этом руководстве, добавьте каталог app/Http/Controllers в директиву classmap вашего файла composer.json. Затем вы можете удалить пространство имен из базового класса абстрактного приложения /Http/Controllers/Controller.php. Убедитесь, что ваши мигрированные контроллеры расширяют этот базовый класс.

В файле app/Providers/RouteServiceProvider.php установите для свойства namespace значение null.

Перечислено здесь под "контроллерами".

Возможно, последняя строка, которая решит вашу проблему.

Ответ 2

вам нужно определить маршруты для любого созданного URL-адреса, и если вы укажете метод контроллера из ссылок или формы. ссылки действий на методы зависят от маршрутов.

Когда вы создадите маршрут для этого, он будет работать, и ошибка исчезнет.