Laravel。在所有路线中保持变量可见
Laravel. Keep variable in view during all routes
我在 laravel 4.2 中遇到了非常简单的问题,但我无法解决。我得到了包含在所有路由中的右侧栏,它必须包含来自我的数据库 table 的一些内容。我在主页路由上得到 mysql 查询,我将变量传递给视图:
$query....
return View::make('home')->with('query', $query);
我只想将这个 vatiable 发送到包含的视图 'right-side-bar',但它必须在所有路由中识别它。我试过嵌套、共享变量,但由于路由改变,我的 'right-side-bar' 视图无法识别变量 $query。我想听听一些如何解决它的建议。提前致谢!
编辑:
使用 View Composer
请记住,当您使用视图作曲家时,您应该通过作曲家自动加载 files/classes。
快速肮脏的方式:
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);
});
基于 class 的方法(推荐)
View::composer('my-view', 'MyViewComposerClass');
然后创建 class
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
我在 laravel 4.2 中遇到了非常简单的问题,但我无法解决。我得到了包含在所有路由中的右侧栏,它必须包含来自我的数据库 table 的一些内容。我在主页路由上得到 mysql 查询,我将变量传递给视图:
$query....
return View::make('home')->with('query', $query);
我只想将这个 vatiable 发送到包含的视图 'right-side-bar',但它必须在所有路由中识别它。我试过嵌套、共享变量,但由于路由改变,我的 'right-side-bar' 视图无法识别变量 $query。我想听听一些如何解决它的建议。提前致谢!
编辑:
使用 View Composer
请记住,当您使用视图作曲家时,您应该通过作曲家自动加载 files/classes。
快速肮脏的方式:
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);
});
基于 class 的方法(推荐)
View::composer('my-view', 'MyViewComposerClass');
然后创建 class
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