Действие 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-адреса, и если вы укажете метод контроллера из ссылок или формы. ссылки действий на методы зависят от маршрутов.
Когда вы создадите маршрут для этого, он будет работать, и ошибка исчезнет.