首页 > 解决方案 > 除非我将完整的命名空间放入 Laravel 中的控制器方法,否则未定义操作

问题描述

嗨,我希望你能帮我解决这个问题。我在文档中找不到解释,但我遇到了这个问题:

如果我像这样放置控制器,则会收到错误消息,告诉我方法未定义

<a href={{ action('MovieController@create')  }}>Create Movie</a></h3>

所以我要像这样解决它,把完整的命名空间

<a href={{ action('App\Http\Controllers\MovieController@create')  }}>Create Movie</a></h3>

我的问题是;有什么方法我不必放置完整的命名空间来让它工作吗?

标签: phplaravelooplaravel-8

解决方案


如果您希望在生成“动作”的 URL 时为控制器添加一个命名空间,则需要在您的RouteServiceProvider:

protected $namespace = 'App\Http\Controllers';

此外,如果您不希望默认情况下为路由分配给控制器的前缀,则必须确保路由组没有此$namespace变量用于使用namespace该服务提供者中的方法分配命名空间。

Laravel 8 中命名空间前缀的参考:目标类控制器不存在 - Laravel 8


推荐阅读