在fuelphp中,我们可以从控制器渲染模板。但我想从包中阻止渲染模板。
示例:
步骤1:fuelphp run controlelr - >渲染模板
第2步:运行包 - >有一个命令来清除步骤1中的所有数据 渲染空白页。
空白页面的结果
$this->template->content = ...
\Package::removeTemplate();
我试过
\Event::forge(array('shutdown'));
\Fuel::finish();
但这并不成功。我该怎么办?
答案 0 :(得分:1)
您可以随时修改您的模板,在每个功能的控制器内使用
$ this-> template
示例
class Controller_lorem extends Controller_Main {
public $template = 'template_default';
public function action_ipsum()
{
//use customize template other than default
$this->template = View::forge('template_custom');
}
答案 1 :(得分:0)
我找到了解决方案。重写\ Fuel :: finish()
public static function finishS()
{
if (\Config::get('caching', false))
{
\Finder::instance()->write_cache('FuelFileFinder');
}
if (static::$profiling and ! static::$is_cli)
{
// Grab the output buffer and flush it, we will rebuffer later
$output = ob_get_clean();
$headers = headers_list();
$show = true;
foreach ($headers as $header)
{
if (stripos($header, 'content-type') === 0 and stripos($header, 'text/html') === false)
{
$show = false;
}
}
if ($show)
{
\Profiler::mark('End of Fuel Execution');
if (preg_match("|</body>.*?</html>|is", $output))
{
$output = preg_replace("|</body>.*?</html>|is", '', $output);
$output .= \Profiler::output();
$output .= '</body></html>';
}
else
{
$output .= \Profiler::output();
}
}
// Restart the output buffer and send the new output
ob_start();
**/// Remove this line echo $output;**
}
}