Php 控制器内的父方法调用不再工作

Php 控制器内的父方法调用不再工作,php,git,laravel-4,composer-php,Php,Git,Laravel 4,Composer Php,我是拉威尔的新手,几天前开始了一个项目。我让composer在没有git的情况下运行,它运行得“很好”。昨天我试着安装了felixkiss/uniquewithvalidator软件包,安装过程中没有出现任何问题,但是新的选项没有实现。在完全更新composer之后,整个应用程序不再工作,我得到一个错误,指出方法RedirectIftRailingFlash()未定义。但这只是一个“前故事”,我不知道这对下面的内容是否重要 在再次阅读一些指南后,我突然意识到我使用了错误的laravel软件包!

我是拉威尔的新手,几天前开始了一个项目。我让composer在没有git的情况下运行,它运行得“很好”。昨天我试着安装了felixkiss/uniquewithvalidator软件包,安装过程中没有出现任何问题,但是新的选项没有实现。在完全更新composer之后,整个应用程序不再工作,我得到一个错误,指出方法
RedirectIftRailingFlash()
未定义。但这只是一个“前故事”,我不知道这对下面的内容是否重要

在再次阅读一些指南后,我突然意识到我使用了错误的laravel软件包! 我使用了
laravel/framework
而不是正确的包
laravel/laravel
。 在这一点上,我备份了损坏的应用程序,并决定只使用composer安装正确的软件包,不使用git总是让我头疼不已。我还决定安装git。 因此,我从依赖项中删除了
laravel/framework
包,并添加了
laravel/laravel

令人惊讶的是,所有的工作都很好,我的文件也很好,唯一的问题是我所有的控制器都坏了。我得到一个错误:

找不到控制器方法

我试过:

  • composer转储自动加载
  • composer更新
  • php artisan dump autoload
    (artisan刚随新软件包一起安装)
更新:

经过进一步调查:问题不直接在于旧控制器,而是调用抛出错误的父方法。 这是我的日历控制器:

class CalendarController extends BaseController {

    protected $layout = 'layouts.master';

    public function __construct()
    {
        //this is a method of BaseController, if I comment out the line, it works fine
        $this->getDays();
    }

    public function init()
    {
        $this->layout->title = 'Start';
        $this->layout->key = 'calendar';
        usort($this->viewData['days'],array($this,'sortDays'));
        $this->getCalendarView();
    }

    private function sortDays($a,$b)
    {
        return $a->teaser_index > $b->teaser_index;
    }

    private function getCalendarView()
    {
        $this->layout->content = View::make('layouts.calendar', $this->viewData);
    }
} 
但是,即使我将方法
getDays()
中的所有内容都注释掉,仍然会抛出错误,因此出于某种原因,我无法再调用父方法

另一次更新

我用方法
hello()
替换了
getDays()
方法。 这是基本控制器(
getDays()
暂时删除):

这就是现在的控制器(
hello()
现在在
init()
方法中,该方法通过路由调用):


不禁纳闷:为什么
getDays
方法在
BaseController
中实现?因为它在每个视图和每个控制器中都是必需的,它对于整个应用程序来说都是必不可少的,没有days就没有视图或更好的没有应用程序;-)显示
BaseController
以及您收到的错误消息?您的
父/BaseCointroller
中是否有
构造函数?一开始可能需要像调用
parent::u construct()
那样调用它。顺便说一句,Laravel提供了一种更好的方法来使用来共享内容。
class BaseController extends Controller {

    var $viewData = array();


    /**
     * Setup the layout used by the controller.
     *
     * @return void
     */


    protected function setupLayout()
    {
        if ( ! is_null($this->layout))
        {
            $this->layout = View::make($this->layout);
        }
    }

    public function hello()
    {
        return 'hello';
    }

}   
class CalendarController extends BaseController {

    protected $layout = 'layouts.master';

    public function __construct()
    {
        //this is a method of BaseController, if I comment out the line, it works fine
        //$this->getDays();
    }

    public function init()
    {

        $this->layout->title = 'Start';
        $this->layout->key = 'calendar';
        //usort($this->viewData['days'],array($this,'sortDays'));
        //$this->getCalendarView();
        echo $this->hello();
    }

    private function sortDays($a,$b)
    {
        return $a->teaser_index > $b->teaser_index;
    }

    private function getCalendarView()
    {
        $this->layout->content = View::make('layouts.calendar', $this->viewData);
    }
}