防止在fuelphp中渲染模板

时间:2014-03-20 04:18:28

标签: fuelphp

在fuelphp中,我们可以从控制器渲染模板。但我想从包中阻止渲染模板。

示例:

  

步骤1:fuelphp run controlelr - >渲染模板

     

第2步:运行包 - >有一个命令来清除步骤1中的所有数据   渲染空白页。

     

空白页面的结果

$this->template->content = ...
\Package::removeTemplate();

我试过

\Event::forge(array('shutdown'));
\Fuel::finish();

但这并不成功。我该怎么办?

2 个答案:

答案 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;**
        }
    }