我有一个索引视图,从特定模型返回一个表。在索引视图中显示的这个表中,我打算根据数据库字段的条目显示图标(例如,数据库字段是' 0',图标应该是glyphicon-remove,当它是& #39; 1'它应该是glyphicon-ok)。遵循MVC理念和DRY的最佳方法是什么?逻辑(根据值分配图标)应该放在控制器的索引函数中,还是将逻辑放在相应的视图中(甚至在模型中)?
答案 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)
你可以用不同的方式做到这一点。像
field
示例[在视图中]
$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>";
}