我得到了
调用未定义的方法ContestsCpController :: getAfterFilters()
在特定的控制器上。所有其他控制器工作正常,我不记得会导致这种破坏的任何变化。事实上,我几周没有触及过代码。我做的最后一件事是重构。
路线
Route::get("contestscp/home", "ContestsCpController@getHome");
控制器
<?php
class ContestsCpController extends BaseController
{
public function getHome() {
return Redirect::to("contestscp/give_award");
}
...
some other methods
...
}
?>
调试输出
/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @param string $method * @return mixed */ protected function assignAfter($instance, $route, $request, $method) { foreach ($instance->getAfterFilters() as $filter) //fails here { // If the filter applies, we will add it to the route, since it has already been
谷歌和SO建议这是在控制器没有扩展BaseController时引起的,但显然情况并非如此。因此,我认为由于某种原因,我的课程没有被扩展。或者......类无法初始化,$instance
为空。但我不知道为什么以及如何调试它。
有什么建议吗?
答案 0 :(得分:3)
我知道这必须是愚蠢的......因为它总是如此。
问题在于我的重构。我曾经将所有验证器扩展到一个文件中。当我将验证器分成不同的文件时,我将ContestsCpValidator类命名为ContestsCPController(duh ..)。所以我有一个同名的第二课,显然没有方法。
所以基本上,如果您碰巧遇到此错误而且您确实在扩展BaseController,请确保您不会自动加载另一个具有相同名称的类。