【发布时间】:2014-10-16 02:21:06
【问题描述】:
全部
我知道View::share 应该在我的应用程序中任何地方都可用,一个常见的地方是我的routes.php 文件。
我正在这样做。
1) 用户登录系统,登录成功后,分享给所有视图。
2) 当用户点击其他页面时,可以使用共享变量。
好的,我的控制器。
public function index() {
$data = array(
"pageTitle" => "index",
);
$privilegeMenu = $this->privilegeApi->getUserPrivilegeByUserId(Session::get('uid'));
$topMenus = $this->menuApi->getTopMenuById($privilegeMenu);
$subMenus = $this->menuApi->getSubMenuesById($privilegeMenu);
View::share('topMenus', $topMenus);
View::share('subMenus', $subMenus);
return View::make('home.index',$data);
}
所以,因为我正在使用视图共享,也就是说,在所有其他视图中,我现在可以使用 topMenus 和 subMenus。
但是当我点击其他页面时,我得到了错误:Undefined variable: topMenus。
所以,我很困惑发生了什么事?我深入 View::share 源代码
Laravel 在namespace Illuminate\View 下有一个名为Environment 的类。
protected $shared = array();
public function share($key, $value = null)
{
if ( ! is_array($key)) return $this->shared[$key] = $value;
foreach ($key as $innerKey => $innerValue)
{
$this->share($innerKey, $innerValue);
}
}
public function shared($key, $default = null)
{
return array_get($this->shared, $key, $default);
}
我发现当用户登录成功时,topMenus 共享成功。但是当我点击其他页面时,不能在shared中topMenus。
似乎一切正常,我很困惑。有谁知道吗?
提前致谢。
【问题讨论】:
标签: php view laravel-4 laravel-routing