Laravel行动没有定义

Ili*_*dis 15 php laravel laravel-5

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

UrlGenerator.php第561行中的InvalidArgumentException:Action 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']);
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

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") {
            //
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误来自这一行:

return redirect()->action('ArticlesController@create')->withInput();
Run Code Online (Sandbox Code Playgroud)

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

Maa*_*n00 9

您收到此错误,因为Laravel 5默认使用命名空间.官方的Laravel 5升级指南说明了有关迁移控制器的以下内容:

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

在app/Providers/RouteServiceProvider.php文件中,将namespace属性设置为null.

上市这里下的"控制器".

最后一行可能会解决您的问题.


Rya*_*yan 5

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

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

我一直试图从另一个控制器操作中做到这一点:

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

  • 这解决了问题。没有任何地方提到该操作应该定义为 web.php 中的路由 (2认同)