Php 未定义Laravel动作
从Laravel 4.2升级到5.0后,我的应用程序几乎每页都会收到以下信息: UrlGenerator.php第561行中的InvalidArgumentException:操作ArticlesController@create未定义。 在我的routes.php文件中,我有: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
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
中定义的?