CI控制器中的html标签

时间:2014-05-15 18:44:07

标签: php html codeigniter

在codeigniter控制器中有一些html标签是否可以。有时我发现很难确定我应该将逻辑移入视图还是将html移动到控制器中。

假设我想仅为个人资料所有者和管理员显示一个textarea,这可以通过两种方式完成(据我所知)。

  1. 在视图中添加更多php,如
  2. if($this->session->username() == $user || $this->session->username() == $administrator){ echo '<textarea></textarea>'; }

    1. 将html标签放在控制器中
    2.   

      $ data [&#39; textarea&#39;] =&#34;&#34 ;; if($ this-&gt; session-&gt; username()== $ user ||   $ this-&gt; session-&gt; username()== $ administrator){

           

      $ data [&#39; textarea&#39;] =&#39; html textarea tages到这里&#39;;

           

      }

           

      $ this-&gt; load-&gt; view(&#39;示例&#39;,$ data);

      还有一些其他很多情况我发现它几乎不可能或很难从控制器中获得单独的html标签,就像这里我想显示带子菜单的菜单所以我们必须为主菜单和第二个运行两个foreach循环一个子菜单,只有在主菜单有子菜单时才会运行。

2 个答案:

答案 0 :(得分:0)

使用控制器与模型进行通信,获取结果并使其准备好在视图中轻松处理。换句话说,如果你想到一个主要目标是显示数据的操作,这个操作 - imo - 应该在视图中完成。关于你展示的两个选项,我会选择1.我认为它涵盖了保持逻辑和表示更好分离的想法。

答案 1 :(得分:0)

基本的简单条件和循环可以在视图中,但控制器不应该有html代码。关于你的第一个选择,也许你应该:

控制器:

$data['is_admin'] = ($this->session->username() == $user || 
                    $this->session->username() == $administrator);

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

查看:

<html>
...
<?php if ($is_admin): ?>
   <textarea></textarea>
<?php endif; ?>
...
</html>

是的,它是冗余代码,您可以将此条件视为查看,但您将访问会话值,这应该由控制器完成,因为它是“逻辑”。条件也是合乎逻辑的,但你能看到控制器相关如何从CI_Session类中获取值吗?