Я пытаюсь перейти от CodeIgniter к Laravel для нового приложения. В CodeIgniter я сделал что-то похожее на следующее: он не работает, как я ожидаю в Laravel. У меня есть следующий код, как мой BaseController в Laravel 4:Laravel 4 Общие активы
class BaseController extends Controller {
private $css_files = array('bootstrap3.min.css');
private $js_files = array();
protected function setupLayout()
{
if (! is_null($this->layout))
{
$this->layout = View::make($this->layout)
->with('css_files',$this->get_css())
->with('js_files',$this->get_js());
}
}
private function get_css(){
return $this->css_files;
}
public function add_css($css_file){
$this->css_files[] = $css_file;
}
private function get_js(){
return $this->js_files;
}
public function add_js($js_file){
$this->js_files[] = $js_file;
}
}
И я стараюсь, чтобы иметь возможность добавлять JS и CSS активов динамически:
class LoginController extends BaseController {
protected $layout = 'layouts.main';
public function index(){
$this->add_css('login.css');
$this->layout->content = View::make('auth.login');
}
}
Просмотр Код:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>APP NAME</title>
@foreach($css_files as $css)
{{ HTML::style("css/{$css}") }}
@endforeach
</head>
Если я делаю методы доступа общедоступными и вызываю их из LoginController, они показывают добавленные файлы css, как ожидалось.
Если я добавлю имя файла login.css в массив файлов css напрямую, как загрузочный css, он работает так, как ожидалось.
Что я делаю неправильно, что приводит к тому, что файлы css не отображаются с BaseController на LoginController? Неужели я ошибаюсь? Заранее благодарим за помощь!
Спасибо за информацию о процессе вызывающего порядке, но когда я попробовал это, я получил следующий ошибка: синтаксическая ошибка, неожиданный '&' – Gorving
Извинения, я отредактировал свой ответ. Синтаксическая ошибка связана с невозможностью вернуть ссылку. – jedifans