2

我需要你的帮助。

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

这是我试图得到它的方法:

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

print($env->getSections());

结果是Array( )

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

4

1 回答 1

0

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

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

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

$sections = $env->getSections();

// Clear it
$env->decrementRender();
$env->flushSections();
于 2013-11-12T13:46:19.397 回答