我在laravel 4.2中遇到了相当简单的问题,但我无法解决它。我收到了右侧栏,在所有路线中都必须包含我数据库表中的一些内容。我在主页路由上获得了mysql查询,并将变量传递给view:
$query....
return View::make('home')->with('query', $query);
我想要的只是将这个空间发送到包含的视图'右侧栏',但它必须在所有路线中识别它。我尝试嵌套,共享变量,但由于路由更改,我的“右侧栏”视图无法识别变量$ query。我想听听一些如何解决它的建议。提前谢谢!
答案 0 :(得分:0)
编辑:
使用View Composers
请记住,当您使用视图作曲家时,您应该通过作曲家自动加载您的文件/课程。
快速肮脏的方式:
View::composer('your-view-name', function($view)
{
$query = //your query code
$view->with('query', $query);
});
或有多个观点:
View::composer(array('a-view','a-second-view'), function($view)
{
$query = //your query code
$view->with('query', $query);
});
基于班级的方法(推荐)
View::composer('my-view', 'MyViewComposerClass');
然后创建类
class MyViewComposerClass{
public function compose($view)
{
$query = //your query code
$view->with('query', query );
}
}
使用基本控制器
很容易解决你想要的是在构造函数中的BaseController中做这样的事情。
<强> BaseController.php 强>
public function __construct(){
$query = //your query code
View::share('query', $query);
}
然后制作你的其他控制器(显然扩展了BaseController) 在这样的构造函数中构造父控制器
扩展BaseController.php的其他控制器
public function __construct(){
parent::__construct();
}
然后像往常一样访问变量。
希望这会有所帮助..
有关视图作曲家的更多信息:
Laravel 4.2:http://laravel.com/docs/4.2/responses#view-composers
Laravel 5.1:http://laravel.com/docs/5.1/views#view-composers