我明白
Call to undefined method ContestsCpController::getAfterFilters()
在特定 Controller 上。所有其他 Controller 都工作正常,我不记得任何会导致此损坏的更改。事实上,我已经好几个星期没有碰过代码了。我做的最后一件事是一些重构。
路线
Route::get("contestscp/home", "ContestsCpController@getHome");
Controller
<?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
Google 和 SO 认为这是当 Controller 未扩展 BaseController 时造成的,但情况显然并非如此。所以我认为由于某种原因我的类(class)没有延长。或者.. 类无法初始化并且 $instance
为 null。但我不知道为什么以及如何调试这个。
有什么建议吗?
最佳答案
我知道这一定是愚蠢的事情......因为它总是如此。
问题出在我的重构上。我曾经将所有验证器扩展在一个文件中。当我将验证器分成不同的文件时,我将 ContestsCpValidator 类错误命名为 ContestsCPController(废话..)。所以我有一个同名的第二个类,显然没有方法。
所以基本上,如果您碰巧遇到此错误并且您确实正在扩展 BaseController,请确保您不会自动加载另一个同名的类。
关于php - Laravel 4 - 调用未定义的方法 SomeController::getAfterFilters(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23984088/