我正在尝试使用来自mysql DB的数据生成一个select标签,该表单不在常规视图中,但它位于部分视图文件中,因此它出现在整个站点中,因此我无法使用常规控制器。
我从BaseController从DB获取数据并通过函数传递数据,我在控制器中的代码如下所示:
protected function setupLayout() {
if (!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
View::composer('partials.footer', function ($view) {
$languages = array('' => 'Choose Language Pair:') + Languages::lists('name', 'id');
$view->with('languages', $languages);
});
}
然后我在选择标准杆上的刀片看起来像这样:
{{ Form::select('sourceLang', $languages, Input::old('sourceLang'), array('class' => 'field required')); }}
我是Laravel的新手,我在教程后想出了这段代码,但它似乎不起作用,它会抛出未定义的变量:语言错误,就像视图没有从数据库中获取数据一样。
我很感激你能给我的任何帮助!
答案 0 :(得分:1)
您必须在调用View::make()
之前定义视图编辑器:
View::composer('partials.footer', function ($view) {
$languages = array('' => 'Choose Language Pair:') + Languages::lists('name', 'id');
$view->with('languages', $languages);
});
if (!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
实际上我根本不会在setupLayout()
注册作曲家。相反,我建议您添加一个新文件app/composers.php
来存储所有视图作曲家。然后你需要把它包含在某个地方。例如,在底部的app/start/global.php
中:
require app_path().'/composers.php';