Php 未定义Laravel动作

Php 未定义Laravel动作,php,laravel,laravel-5,Php,Laravel,Laravel 5,从Laravel 4.2升级到5.0后,我的应用程序几乎每页都会收到以下信息: UrlGenerator.php第561行中的InvalidArgumentException:操作ArticlesController@create未定义。 在我的routes.php文件中,我有: Route::get('articles/create', ['as' => 'articles.create', 'uses' => 'ArticlesController@create']); Rout

从Laravel 4.2升级到5.0后,我的应用程序几乎每页都会收到以下信息:

UrlGenerator.php第561行中的InvalidArgumentException:操作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();
有什么帮助吗?
谢谢,Ilias

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

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

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

列在“控制器”下


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

您必须为生成的任何URL定义路由,如果您指向链接或表单中的控制器方法。方法的操作链接取决于路由


当您为此创建路由时,它将工作,错误将消失。

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

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

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


return redirect()->action('HomeController@myActionName“)->带有('windowTitle','错误。请与我们联系。”)->带有('message',$message)

请运行
php artisan route:list
并查看
ArticlesController@create
已列出路由。return redirect()->action('App\Http\Controllers\ArticlesController@create');如果手动转到
文章/create
,是否有效?我建议使用路由而不是操作
redirect()->route('articles.create')这解决了问题。没有人提到应该在web.phpWhat中将该操作定义为路由,如果它是在
api.php
中定义的?