我正在通過編寫一個小測試應用程序來學習如何使用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