显示基于数据库条目的图标

时间:2016-10-21 14:37:58

标签: cakephp cakephp-2.5

我有一个索引视图,从特定模型返回一个表。在索引视图中显示的这个表中,我打算根据数据库字段的条目显示图标(例如,数据库字段是' 0',图标应该是glyphicon-remove,当它是& #39; 1'它应该是glyphicon-ok)。遵循MVC理念和DRY的最佳方法是什么?逻辑(根据值分配图标)应该放在控制器的索引函数中,还是将逻辑放在相应的视图中(甚至在模型中)?

2 个答案:

答案 0 :(得分:1)

  

遵循MVC理念和DRY的最佳方法是什么?

A helper。显然不是控制器。

我为该任务编写了一个名为bool()的辅助方法。

/**
 * Bool
 *
 * @param mixed $value
 * @param array $options
 * @return string
 */
public function bool($value, $options = array()) {
    $defaults = array(
        'true' => __d('app', 'Yes'),
        'false' => __d('app', 'No'),
        'escape' => true,
    );
    $options = Hash::merge($defaults, $options);
    $return = $options['false'];
    if ($value == true) {
        $return = $options['true'];
    }
    if ($options['escape'] === true) {
        return h($return);
    }
    return $return;
}

然后使用它:

$this->MyHelper->bool($yourValue, [
    'true' => 'glyphicon glyphicon-ok', 
    'false' => 'glyphicon glyphicon-remove']
);

根据任务的不同,编写另一个帮助方法可能会更好,该方法使用bool()进行检查,但输出整个字符串,无论你想呈现什么。你没有显示任何代码,所以这只是猜测。

答案 1 :(得分:0)

你可以用不同的方式做到这一点。像

  • 将glyphicon图标类存储到数据库field
  • 将glyphicon类设置为数组并使用您的条件显示
  • 设置条件,在视图[HTML]
  • 中显示数据时

示例[在视图中]

$data = array(/*YOUR QUERY DATA IS HERE*/);

foreach ($data as $key => $value) { /*Check your Database field is `0` or `1`*/
    $icon = 'glyphicon glyphicon-remove';

    if ($value->YOUR_FIELD==1) { /*Check with your proper field name*/
      $icon = 'glyphicon glyphicon-ok'
    }

    echo "<span class='{$icon}'></span>";
}