我正在通过编写一个小测试应用程序来学习如何使用Laravel。到目前为止,它的发展非常好,我对该框架的所有功能感到兴奋。但是,当我尝试应用特定的设计模式时,我一直在打墙。Laravel基本控制器方法
我现在有一个设立在那里我可以设置HTML标题,关键字和描述默认值主控制器,然后有选择地改变它们在扩展它的子控制器:
基地控制器
protected function setupLayout()
{
$this->layout->title = 'Wow website';
$this->layout->desc = 'Much technical';
$this->layout->keys = 'so html, very javascript';
$foot = View::make('mod.footerDefault');
$this->layout->footer = $foot;
}
儿童控制器
public function getContact()
{
$this->title = 'Contact page of contactness';
// Could also override the desc and keys if desired,
// but I'll just let them default here
$data = 'wow';
$view = View::make('main.home', $data)
->nest('vid', 'mod.video')
->nest('list', 'mod.list');
$this->layout->content = $view;
}
这是所有肉汁,但如果我有,我已经与之交互的对象,如菜单类,需要重新编译成一串HTML? laravel中有没有类似于自动调用setupLayout()方法的方法,但是每次调用View :: make方法时?
(更多的例子...只是为了说明)
基地控制器
protected function setupLayout()
{
$this->menu = newMenu();
$this->menu->items[0] = ['contact-us', 'Contact us'];
$this->menu->items[1] = ['about-us', 'About us'];
$this->menuString = $this->menu->getString();
}
儿童控制器
public function getContact()
{
$this->menu->addItem(['log-out', 'Log out']);
// Now $this->menuString must be recalculated.
// Ideally want to avoid having to call a method from the base controller
// every time the child controller calls View::make
$view = View::make('main.home')
$this->layout->content = $view;
}
我知道有这样的事,作为视图的作曲家,但我不认为这些在View :: make()上被调用。
感谢您与我坚持通过这么长的问题阅读。我没有意识到视图作曲家在视图呈现之前被调用。接受你的回应后,我有一些关于我的工作。谢谢! – kohloth 2014-12-09 20:00:32
而不是感谢您的意见,请使用该功能标记答案为接受和/或upvote答案时,他们是有用的或downvote,如果他们是错的。所以任何人都可以看到这个问题已经解决了。这是它的工作原理:http://stackoverflow.com/tour – 2014-12-10 07:00:24