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