我需要你的帮助。
我刚刚发现类\Illuminate\View\Environment有一个受保护的数组$sections和一个获取它的方法getSections()但它返回一个空数组。
以下是我试图获得它的方式:
$view = View::make('pages');
$env = $view->getEnvironment();
$env->make('pages');
print($env->getSections());
结果是Array( )
我哪里出错了?任何建议将不胜感激。
答案 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();