Laravel - 控制器内部的父方法调用不再起作用

时间:2013-11-06 15:08:27

标签: php git laravel-4 composer-php

我是laravel的新手,几天前用它开始了一个项目。我让作曲家在没有git的情况下运行,它的工作“没问题”。昨天我尝试安装软件包felixkiss/uniquewith-validator,安装过程没问题,但新选项没有实现。完全更新作曲家后,整个应用程序不再起作用,我收到一个错误,指出方法redirectIfTrailingSlash()未定义。但这只是“故事前”,我不知道这对以下内容是否重要。

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

令人惊讶的是一切都运行良好,我的文件也很好,只有问题我的所有控制器都坏了。我收到了错误:

  

找不到控制器方法。

我试过了:

  • composer dump-autoload
  • composer update
  • php artisan dump-autoload(Artisan刚安装新包装)

更新

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

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()中的所有内容进行了注释,仍然会抛出错误,因此由于某种原因我无法再调用父方法。

另一次更新

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

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';
    }

}   

现在这是控制器(hello()现在位于通过路径调用的init()方法中):

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);
    }
}

0 个答案:

没有答案