【问题标题】:Simple way to replace a php switch statement in mustache.php?在 mustache.php 中替换 php switch 语句的简单方法?
【发布时间】:2012-10-02 20:08:43
【问题描述】:

我正在研究如何用 Mustache.php 做一些常见的事情。 此时,我正在尝试替换模板中的原生 php switch 语句。

给定一个“状态”标志,例如'A' 表示活跃,

还有一组显示选项,例如A => Active, I => Inactive, P=>Pending, D=>Deleted

如何通过修改模板中的数据在 Mustache.php 中制作一个漂亮的显示字符串?

表格数据示例:

$users = array(
array('username'=>'william', 'status'=>'A', 'date_created'=>'7-01-2012'),
array('username'=>'john', 'status'=>'P', 'date_created'=>'5-17-2012')
);

【问题讨论】:

    标签: php mustache mustache.php


    【解决方案1】:

    Mustache 的全部意义在于让您的模板从所有逻辑中清除。小胡子模板应该是无逻辑的。对于新手来说,这是一种完全不同且令人困惑的方法。

    要解决您的问题,您需要预先重新处理 $users 数组以包含您的 Mustache 模板所需的所有内容。 例如如果 status 字段 switch 语句旨在显示人类可读的状态,那么您的 View 类应该如下所示:

    class View_User {
    
        public $_users;
    
        public function users()
        {
            $users = array();
            foreach ($this->_users as $user)
            {
                $user->status_label = // Use your 'switch' statement here
                $users[] = $user;
            }
            return $users;
        }
    }
    

    那么你的 Mustache 模板需要做的就是像这样输出{{status_label}}

    <ul>
        {{#users}}
            <li>Status: {{status_label}}</li>
        {{/users}}
    </ul>
    

    在 View 类中包含您的逻辑,并让您的 Mustache 模板无逻辑。以这种方式分离的 UI 代码使得以后维护和重构变得更加容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      相关资源
      最近更新 更多