未定义拉拉维尔动作

2022-08-30 21:13:34

从Laravel 4.2更新到5.0后,我几乎在应用程序的每个页面中都收到以下消息:

无效参数 UrlGenerator 中的异常.php行 561:未定义操作ArticlesController@create。

在我的路由中.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();

有什么帮助吗?谢谢,伊利亚斯


答案 1

您收到此错误是因为 Laravel 5 默认使用命名空间。官方的Laravel 5升级指南对迁移控制器有如下规定:

由于我们不打算在本指南中迁移到全名间距,因此请将 app/Http/Controllers 目录添加到 composer.json 文件的 classmap 指令中。接下来,可以从抽象应用/Http/控制器/控制器.php基类中删除命名空间。验证迁移的控制器是否正在扩展此基类。

在应用/提供程序/RouteServiceProvider.php文件中,将命名空间属性设置为 null。

在此处的“控制器”下列出。

最后一行可能是解决您的问题的行。


答案 2

我收到相同的错误消息,这是因为我完全忘记了我需要将其添加到:routes/web.php

Route::get('myUrlPath', 'HomeController@myActionName');

我一直在尝试从另一个控制器操作中执行此操作:

return redirect()->action('HomeController@myActionName')->with('windowTitle', 'Error. Please contact us.')->with('message', $message);


推荐