我正在处理的应用程序有几个名为“active”的数据库字段,它是boolean。但是,我不想在视图中显示“1”或“0”,而是要说“是”或“否”。
我有以下功能:
function activeFriendlyName($status)
{
if ($status == 1)
{
return "Yes";
}
else
{
return "No";
}
}
但是,我不确定应该把这个全局函数放在哪里?它是app_model.php文件吗?另外,我如何调用此函数来应用“格式化”?
答案 0 :(得分:5)
您应该保留数据库中的数据,直到您需要显示它为止。这意味着View是改变它的最佳位置。我只想简单地说:
echo $model['Model']['bool'] ? "Yes" : "No";
但是如果您需要更复杂的格式规则,而您不想每次都重复这些规则,请制作一个自定义助手。
你可以在bootstrap.php
中定义一个全局函数,但我不推荐它。
答案 1 :(得分:0)
我个人会做的是将afterFind回调添加到您所拥有的模型中以更改状态。
class MyModel extends Model {
... // the rest of model code
function afterFind($results) {
foreach ($results as $key => $val) {
if (isset($val['MyModel']['status'])) {
$results[$key]['MyModel']['status_text'] = $results[$key]['MyModel']['status'] ? 'Yes' : 'No';
}
}
return $results;
}
}
这样你仍然拥有所有字段(如果是普通形式),你仍然可以更新并保存你的模型,如果你将从db中提取的int值更改为字符串,那么这些模型将不起作用。