【问题标题】:Creating custom templates for rendering common pages创建用于呈现通用页面的自定义模板
【发布时间】:2013-09-09 06:41:51
【问题描述】:

我是 codeigniter 的新手,我想知道如何使用自定义模板来呈现常见页面,如页眉、页脚、侧面板等。连同页面的数据。

class Template {

function show($view)
{
    <?php $this->load->view('header'); ?>
    <?php $this->load->view($view,$data); ?>
    <?php $this->load->view('footer',$data); ?>
}
} 

这是我的意思的示例。谁能帮忙。

【问题讨论】:

  • 我保证这会像甜蜜的胜利一样震撼你的世界stackoverflow.com/questions/14968868/…灵活吗?是的。强大的?是的。简单但仍然非常灵活?是的。
  • 感谢您的信息...

标签: php codeigniter templates header footer


【解决方案1】:

不要在一个控制器函数中调用 3 个视图,因为它们会限制你。而是只调用一个视图,该视图调用另外 3 个视图。

这是你的计划:

$this->load->view('header');
$this->load->view($view,$data);
$this->load->view('footer',$data);

问题是您的页眉视图会打开一些 HTML 标签,这些标签会在页脚视图中关闭,例如 div#container。这将使您的代码难以辨认。

我的建议是:

$main_data['a']=...
$main_data['b']=...
$main_data['c']=...
$this->general_view('myview',$main_data);

protected function general_view($main_view,$main_data)
{
  $data['main_data']=$main_data;
  $data['main_view']=$main_view;
  $this->load->view('general_view',$data);
}

内部视图:

<HTML>
  <HEAD>
    ....
  </HEAD>
  <BODY>
    <?$this->load->view('header');?>
    <div id="container">
      <?$this->load->view($main_view,$main_data);?>
    </div>
    <?$this->load->view('footer',$data);?>
  </BODY>
<HTML>

【讨论】:

    【解决方案2】:

    使用模板库,这是一个很好的:Stencil,或者使用:this way

    【讨论】:

      【解决方案3】:

      可以,只需在名为 masterpage.php 的视图中添加一个文件,然后使用以下代码:

      <html>
      <head>
      </head>
      <body>
      <div class='menu'>My Menu here</div>
      <div class='content'>
      <?php echo $content; ?>
      </div>
      </body>
      </html>
      

      那么你的观点应该是这样的

      <?php
        ob_start();
      ?>
      content
      
      <?php
        $content= ob_get_contents(); 
        ob_end_clean(); 
        include("application/views/masterpage.php");
      ?>
      

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        您可以扩展一个 abstractClass 以获得层次结构索引:

        抽象类:

        class AbstractController extends CI_Controller
        {  
             var $_template;
        
             function __construct()
             {
                parent::__construct();
             }
        
             function index()
             {
                $this->load->view('header');
                $this->load->view($this->_template);
                $this->load->view('footer',$data);
             }
        } 
        

        家庭控制器:

        class Home extends AbstractController
        {
           function __construct()
           {
                parent::__construct();
        
                $this->_template = "home/home_view";
           }
        }
        

        当您访问 site.com/home 时,您将覆盖 $this->_template 和主视图路径,并从抽象控制器调用 index()

        祝你好运

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-03
          • 1970-01-01
          • 2013-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多