【问题标题】:codeigniter template parsingcodeigniter 模板解析
【发布时间】:2012-12-30 22:44:52
【问题描述】:

codeigniter 中的模板解析实际上是如何工作的?

我在视图文件中有以下部分

<h2>{blog_heading}</h2>
<div>{blog_entries}</div>

在控制器中

$this->load->library('parser');

$data = array(
            'blog_heading' => 'My Blog Title',
            'blog_entries' => $products_array()
            );

$this->parser->parse('blog_template', $data);

效果很好,但问题是我有很多这样的标签,所以我需要在控制器上定义所有东西吗?

问题在于性能,用户不会每次都使用所有标签。

请帮我解决问题。

谢谢

【问题讨论】:

  • 您是否尝试将视图拆分为多个视图?这样,您只能解析您实际需要的视图。听起来好像您有某种主视图。
  • @MaximeMorin 由于某些原因,我无法更改视图的结构,而且想法是制作一个类似项目的框架,这意味着视图可能会发生变化,但控制器和其他人将是私有的(用于编辑)给用户。
  • 您是否尝试向您的框架用户提供可用标签列表,以便他们可以在任何视图上使用?
  • Users 表示Developer 而不是any views,例如,有一个名为show_product 的视图,开发人员可以在该视图上使用任何与产品相关的活动。例如&lt;div&gt;%products?id=5description=false%&lt;/div&gt; 它只是意味着用id=5 显示产品,但不显示description,看起来我需要扩展 Parsing 类。
  • 我同意你的观点,你绝对需要你自己的解析类。您可以扩展核心,但您的更改完全不同,我会自己构建。只是我的 2 美分。

标签: php codeigniter codeigniter-2 template-engine


【解决方案1】:

回答您的问题,是的,您应该在控制器上创建所有变量。当用户访问您的控制器时,您可以在那里签入“需要”标签,然后根据用户偏好或您的应用程序的要求仅显示需要的标签。在视图上,您​​应该只显示标签。如果您正在对破坏整个 MVC 概念的视图进行计算和更改值,这就是 CodeIgniter 的全部原因。

您不应该仅仅因为可以就在控制器中创建变量 :) 仅在访问者需要时才需要创建它们。如果您正在创建所有标签但没有在视图上显示所有标签,那么您可能需要一种方法来识别所需的标签,然后根据用户的选择和需求创建新的标签,使用另一个控制器或相同的控制器,接收信息。

如果您在控制器上进行计算,然后在视图上进行更多计算,则该代码不适用于 MVC 模型。必须在控制器中进行计算和定义。在视图中,您可以根据需要的条件选择是否要显示该变量,但不要更改其内容。

总之,为了维护 MVC 概念,所有变量都必须在控制器中创建。

希望这可以帮助您更多地了解 CodeIgniter。这是一个很棒的框架,您只需要确保以正确的方式使用它。

亲切的问候。

【讨论】:

  • 其实你想说什么?在我的问题上编码只是一个例子。回答你的问题:标签不是动态生成的,它在文件系统上,你能建议我以有效的方式检查标签的存在吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多