zoukankan      html  css  js  c++  java
  • CI 模板解析器类

    模板解析器类可以解析你的视图文件中的伪变量。它可以解析简单的变量或者以变量作为标签的结构。如果你以前没有用过模板引擎,那么伪变量如下所示:

    <html>
    <head>
    <title>{blog_title}</title>
    </head>
    <body>

    <h3>{blog_heading}</h3>

    {blog_entries}
    <h5>{title}</h5>
    <p>{body}</p>
    {/blog_entries}
    </body>
    </html>

    这些变量不是标准的PHP变量,但是这样的以文本形式展现可以让你很容易地区分出它与PHP变量的不同之处。

    注意:因为在视图文件中使用纯PHP要快一些,所以CodeIgniter 要求你一定要用这个类。然而,有一些开发者和对使用PHP有困难的设计师一同工作时,更愿意使用模板引擎。

    Also Note: 模板解析类不是一个完善的模板解析方案。为了保持最高性能,我们的模板解析类非常精简。

    类的初始化

    如同CI中的其他类, 使用$this->load->library 函数在控制器中初始化模板解析类:

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

    一旦加载,模板解析类可以这样使用: $this->parser

    下面的函数在库中可用:

    $this->parser->parse()

    这个方法接收一个模板名和数据数组作为输入,生成一个解析过的版本。例如:

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

    $data = array(
                'blog_title' => 'My Blog Title',
                'blog_heading' => 'My Blog Heading'
                );

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

    第一个参数包含视图文件的文件名(在这个例子中是blog_template.php), 第二个参数包含一个用于模板替换的相关数组。 在上面的例子中,这个模板包含两个变量:{blog_title} 和 {blog_heading}

    不用“echo”或处理$this->parser->parse()返回的数据。他会自动传送数据到output类最终输出到浏览器。然而,如果你想返回数据而不是发送到output类,你可以使用TRUE(布尔值)作为第三个参数。

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

    $this->parser->parse_string()

    This method works exactly like parse(), only accepts a string as the first parameter in place of a view file.

    变量对

    上面的示例代码中演示简单变量的替换。如果你想要替换整个块的变量,这个块的每行都包含新值?想象一下在页面最顶端我们展示的例子:

    <html>
    <head>
    <title>{blog_title}</title>
    </head>
    <body>

    <h3>{blog_heading}</h3>

    {blog_entries}
    <h5>{title}</h5>
    <p>{body}</p>
    {/blog_entries}
    </body>
    </html>

    在上面的代码中你会注意到一对变量: {blog_entries} 数据…… {/blog_entries}。 像这样,在这对变量中间的数据将会被多次替换,替换的次数取决于结果集的行数。

    除了要根据你的数据提供一个多维数组以外,变量对的解析代码和单个变量的解析代码相同。参考下面的例子:

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

    $data = array(
                  'blog_title'   => 'My Blog Title',
                  'blog_heading' => 'My Blog Heading',
                  'blog_entries' => array(
                                          array('title' => 'Title 1', 'body' => 'Body 1'),
                                          array('title' => 'Title 2', 'body' => 'Body 2'),
                                          array('title' => 'Title 3', 'body' => 'Body 3'),
                                          array('title' => 'Title 4', 'body' => 'Body 4'),
                                          array('title' => 'Title 5', 'body' => 'Body 5')
                                          )
                );

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

    如果你的“数据对”来自数据库的查询,那么它已经是一个二维数组,你可以轻松的使用数据库 result_array() 函数:

    $query = $this->db->query("SELECT * FROM blog");

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

    $data = array(
                  'blog_title'   => 'My Blog Title',
                  'blog_heading' => 'My Blog Heading',
                  'blog_entries' => $query->result_array()
                );

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

  • 相关阅读:
    ORM数据库框架 SQLite ORMLite MD
    ORM数据库框架 greenDAO SQLite MD
    layer-list shape drawable 层叠背景 MD
    BAT 批处理 特殊符号 总结 [MD]
    集合 enum 枚举 简介 案例 [MD].md
    Gradle 翻译 ProGuard Shrink 混淆和压缩 [MD]
    构建配置 Enable multidex
    构建配置 defaultConfig signingConfigs buildTypes productFlavors dependencies
    Android 资源混淆 AndResGuard MD
    Android 第三方加固方案 对比 打包 [MD]
  • 原文地址:https://www.cnblogs.com/youxin/p/3150569.html
Copyright © 2011-2022 走看看