使用CakePHP 3,我在一个表中有一个布尔值[tinyint(1)],编辑和添加模板上有一个复选框,但是如何让索引和查看模板显示一个字符串,例如true/false或yes/no而不是1/0。我应该在控制器操作中映射它们,还是可以在模板中添加选项?
使用CakePHP 3,我在一个表中有一个布尔值[tinyint(1)],编辑和添加模板上有一个复选框,但是如何让索引和查看模板显示一个字符串,例如true/false或yes/no而不是1/0。我应该在控制器操作中映射它们,还是可以在模板中添加选项?
这两个答案都可以正常工作。
我创建了一个 Helper 类在 /src/View/Helper/FormatBooleanHelper.php
,如下所示:
<?php
/*
* FormatBooleanHelper
*
* CakePHP Helper created to format boolean values in either Yes/No or True/False text.
* By: Jared Testa
*
*/
namespace App\View\Helper;
use Cake\View\Helper;
class FormatBooleanHelper extends Helper
{
/**
* yesNo method
*
* @param boolean| $value boolean
* @return string
*
*/
public function yesNo($value, $showNo = true) {
return ($value) ? "Yes" : (($showNo) ? "No" : "");
}
/**
* trueFalse method
*
* @param boolean| $value boolean
* @return string
*
*/
public function trueFalse($value, $showFalse = true) {
return ($value) ? "True" : (($showFalse) ? "False" : "");
}
}
?>
这个助手在标准约定中使用,可以在AppView.php文件的initialize方法中包含$this->loadHelper('FormatBoolean');
。
然后在视图中使用助手,包括$this->FormatBoolean->yesNo($booleanVariable)
或$this->FormatBoolean->yesNo($booleanVariable, false)
。后者的示例将在假响应中使字段为空白。
过度杀伤?也许...但我认为它适合CakePHP结构,并且这是创建自己的助手的一个很好的练习。
我在CakePHP版本3.3.4中使用了这个助手。希望对未来的某些人有所帮助。
简单来说:
<?= ($var)?'yes':'no' ?>
当您进入显示数据时,可以选择显示字符串而不是整数。这是一种简化的方法,因为您没有提供任何代码或其他信息:
在视图中,$isTrue 是布尔值:
<?php if($isTrue){echo "true";}else{echo "false";} ?>
public function checkX($value, $showFalse = true) {
return ($value) ? '<i class="fi-check"></i>' : (($showFalse) ? '<i class="fi-x"></i>' : '');
}