CI控制器中的html标签


html tags in CI controller

是否可以在codeigniter控制器中有一些html标签?有时我发现很难决定我应该把逻辑移到视图或html到控制器。

假设我想显示只有配置文件所有者和管理员的文本区,这可以通过两种方式完成(据我所知)。

  1. 将更多php放到视图中,如

if($this->session->username() == $user || $this->session->username() == $administrator){ echo '<textarea></textarea>'; }

  1. 在控制器中添加html标签,如

$data['textarea'] = ";如果($this->session->username() == $user ||$this->session->username() == $administrator){

$data['textarea'] = 'html textarea tags goes here';

}

$ this ->加载>视图("例子",$ data);

还有一些其他的许多情况下,我发现它几乎不可能或v很难从控制器有单独的html标签,像这里我想显示菜单与子菜单,所以我们必须运行两个foreach循环一个主菜单和第二个子菜单只有运行,如果主菜单有子菜单

使用控制器与模型通信,获取结果并使其易于在视图中处理。换句话说,如果您考虑一个主要目标是显示数据的操作,那么这个操作应该在视图中完成。关于你展示的两个选项,我选择1。我认为它涵盖了将逻辑和表示更好地分离的思想。

基本的简单条件和循环可以出现在视图中,但控制器不应该有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类获取值的吗?