Laravel 4从Blade模板获取Controller / Router层中的会话数组

时间:2013-11-12 12:17:11

标签: php arrays laravel-4 blade

我需要你的帮助。

我刚刚发现类\Illuminate\View\Environment有一个受保护的数组$sections和一个获取它的方法getSections()但它返回一个空数组。

以下是我试图获得它的方式:

$view = View::make('pages');
$env = $view->getEnvironment();
$env->make('pages');

print($env->getSections());

结果是Array( )

我哪里出错了?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

那是因为当您致电$env->make('pages')时,视图不会立即处理。它仅在调用$ view对象上的render方法时处理,当您将其作为响应返回时,通过__toString()方法自动完成。但问题是,在页面呈现之后,使用$sections variable is cleared方法仍然在render方法flushSections内。所以你实际上永远无法访问它。

如果在制作视图之前调用incrementRender方法,然后制作并渲染视图,获取部分,最后decrementRender()flushSections(),则可以尝试欺骗它,但是这会带来意想不到的结果。像这样:

// Fool it
$env->incrementRender();
$env->make('pages')->render();

$sections = $env->getSections();

// Clear it
$env->decrementRender();
$env->flushSections();