Php Laravel4从刀片模板获取控制器/路由器层中的节数组

Php Laravel4从刀片模板获取控制器/路由器层中的节数组,php,arrays,laravel-4,blade,Php,Arrays,Laravel 4,Blade,我需要你的帮助 我刚刚发现该类有一个受保护的数组和一个获取它的方法getSections(),但它返回一个空数组 下面是我如何尝试得到它的: $view = View::make('pages'); $env = $view->getEnvironment(); $env->make('pages'); print($env->getSections()); 结果是Array() 我哪里出错了?如有任何建议,将不胜感激 这是因为当您调用$env->make('pages')

我需要你的帮助

我刚刚发现该类有一个受保护的数组和一个获取它的方法getSections(),但它返回一个空数组

下面是我如何尝试得到它的:

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

print($env->getSections());
结果是
Array()


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

这是因为当您调用
$env->make('pages')
时,不会立即处理视图。只有在调用$view对象上的方法时才会处理它,当您通过该方法将其作为响应返回时,会自动执行该操作。但问题是,页面渲染后,仍然在
render
方法中,使用该方法。所以你实际上从来没有接触过它

如果您在创建视图之前调用该方法,然后创建并渲染视图,获取部分,最后是
DecrementTrender()
flushSections()
,您可能会试图愚弄它,但这可能会带来意外的结果。大概是这样的:

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

$sections = $env->getSections();

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

我爱你,伙计。我以为flushSections()是“问题”,但不知道如何避免它。非常感谢你。祝您有愉快的一天。不客气,=D。顺便说一句,访问
$env
对象可能有比创建视图并从视图中获取对象更好的方法。类似于
$app['env']
的东西,也许不知道,但是我确信从视图访问节是有用的,所以我创建了一个pull请求,它可能是有用的。祝公共关系好运。