在我的一些控制器中,我有为多种方法传递的通用路由参数。其中一些参数需要一些额外的处理(字符串处理),这些处理需要传递相同的参数并在使用这些参数的每个控制器方法中调用相同的处理方法。我没有复制代码,而是我的控制器包含了一个特性,并在控制器的构造函数方法中调用了该特征。
这很好用,我可以将这些参数绑定到类属性,并且可以通过我的所有方法访问它们。问题是在运行实例化控制器的工匠命令时,例如artisan route:list
。运行该命令时出现以下错误:
Call to a member function getParameter() on null
我知道这是因为对Route::current()
的调用将返回null
,因为在运行工匠时没有Route或Request对象,但我发现自己必须将我的特征中的代码注释掉获取我的路线列表。我确定也可能出现其他问题。
我的问题是,我怎样才能解决这个问题?我现在能想到的唯一解决方案是在每个控制器方法上调用我的参数注册方法,但我不想这样做。有什么想法吗?
答案 0 :(得分:0)
您可以随时修改Controller.php
文件,而不是使用特征,以包含其他控制器将继承的公共代码。由于您的所有控制器extends Controller
都可以使用常用功能,因此您只需在代码中调用$this->getParameter()
即可。