Laravel 4 - 调用未定义的方法SomeController :: getAfterFilters()

时间:2014-06-01 20:18:13

标签: php laravel-4

我得到了

  

调用未定义的方法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为空。但我不知道为什么以及如何调试它。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我知道这必须是愚蠢的......因为它总是如此。

问题在于我的重构。我曾经将所有验证器扩展到一个文件中。当我将验证器分成不同的文件时,我将ContestsCpValidator类命名为ContestsCPController(duh ..)。所以我有一个同名的第二课,显然没有方法。

所以基本上,如果您碰巧遇到此错误而且您确实在扩展BaseController,请确保您不会自动加载另一个具有相同名称的类。