根据数据库条目显示图标

Display icon based on database entry

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

您可以使用不同的方式来完成。喜欢

  • 正在将字形图标 类 存储到数据库 field
  • 将 glyphicon 类 设置为数组并根据您的条件显示它
  • 设置条件,在View中显示数据时[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>";
}

What is the best approach to follow the MVC idea and 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() 进行检查但输出整个字符串,无论您想要呈现什么。您没有显示任何代码,所以这只是一个猜测。