【问题标题】:codeigniter parse content in templatecodeigniter 解析模板中的内容
【发布时间】:2016-04-14 13:29:15
【问题描述】:

谁能帮我解释一下在codeigniter中以哪种方式组织视图最好,并制作一些页眉和页脚相同但内容为每个页面更改的模板?我使用解析将数据从控制器发送到视图,但不知道如何以所述方式组织视图。

还有如何避免视图中的php逻辑(如果)?

【问题讨论】:

    标签: php codeigniter parsing templates view


    【解决方案1】:

    如果您不使用模板库,有两种方法:

    1.在内容视图中请求您的部分视图:

    <?php $this->load->view('header') ?>
    My content
    <?php $this->load->view('footer') ?>
    

    2。创建一个布局视图,将内容作为变量传递:

    <html>
    <body>
    <?php echo $content ?>
    </body>
    

    在这种情况下,在您的控制器中:

    // The true parameter means it will load the view, but just pass back as a string
    $content = $this->load->view('mycontent', array(), TRUE); 
    
    // Display the layout with your content
    $this->load->view('layout', compact('content'));
    

    在询问逻辑时,不要太严格。 ifforforeach 在模板中是可以的。例如,如果用户已登录,则显示菜单。

    【讨论】:

    • 谢谢,我现在试试第二种方法。对于使用解析器时如何使用的逻辑,现在我将视图中的变量打印为 {name}、{lastname}、{city},但是如何说 if active==1 echo active else echo non-active?
    • &lt;?php echo ($active == 1 ? 'active' : 'non-active') ?&gt;
    • 您必须将活动变量传递给您的视图:$this-&gt;load-&gt;view('page', array('active' =&gt; true));
    • 我这样做了,我列出了所有正常的,甚至是活动的,但在 if 语句中显示错误。
    • 我尝试使用 {if active == 1} active {/if},但不起作用
    【解决方案2】:

    这可能会帮助您了解模板。

    控制器:

    public function index() {
      $data = array(
        'blog_title' => 'Home',
        'blog_content'  => 'Content goes here..',
        'footer_data'   => 'footer data here..'      
      );
    
     $this->load->view(templates/header, $data);
     $this->load->view(templates/content, $data);
     $this->load->view(templates/footer, $data);
    }
    

    注意:假设模板是您的视图文件夹中的一个目录。在你的模板中必须有 header、content 和 footer.php 文件。

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多