Php 控制器内的父方法调用不再工作
我是拉威尔的新手,几天前开始了一个项目。我让composer在没有git的情况下运行,它运行得“很好”。昨天我试着安装了felixkiss/uniquewithvalidator软件包,安装过程中没有出现任何问题,但是新的选项没有实现。在完全更新composer之后,整个应用程序不再工作,我得到一个错误,指出方法Php 控制器内的父方法调用不再工作,php,git,laravel-4,composer-php,Php,Git,Laravel 4,Composer Php,我是拉威尔的新手,几天前开始了一个项目。我让composer在没有git的情况下运行,它运行得“很好”。昨天我试着安装了felixkiss/uniquewithvalidator软件包,安装过程中没有出现任何问题,但是新的选项没有实现。在完全更新composer之后,整个应用程序不再工作,我得到一个错误,指出方法RedirectIftRailingFlash()未定义。但这只是一个“前故事”,我不知道这对下面的内容是否重要 在再次阅读一些指南后,我突然意识到我使用了错误的laravel软件包!
RedirectIftRailingFlash()
未定义。但这只是一个“前故事”,我不知道这对下面的内容是否重要
在再次阅读一些指南后,我突然意识到我使用了错误的laravel软件包!
我使用了laravel/framework
而不是正确的包laravel/laravel
。
在这一点上,我备份了损坏的应用程序,并决定只使用composer安装正确的软件包,不使用git总是让我头疼不已。我还决定安装git。
因此,我从依赖项中删除了laravel/framework
包,并添加了laravel/laravel
令人惊讶的是,所有的工作都很好,我的文件也很好,唯一的问题是我所有的控制器都坏了。我得到一个错误:
找不到控制器方法
我试过:
composer转储自动加载
composer更新
(artisan刚随新软件包一起安装)php artisan dump autoload
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);
}
}