使用cakephp 3,我在表中有一个布尔值[tinyint(1)],编辑和添加模板在表单上有一个复选框,但是我如何获得索引和视图模板来显示一个字符串,如真/假或是/否而不是1/0。我是否可以在控制器动作中映射它们,或者是否有一个选项可以添加到模板中?
给出的答案都很好。
我在/src/View/Helper/FormatBooleanHelper.php
中创建了一个Helper类,如下所示:
<?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文件的初始化方法中包含$this->loadHelper('FormatBoolean');
,在标准约定中使用该帮助器。
然后通过在视图中包含$this->FormatBoolean->yesNo($booleanVariable)
或$this->FormatBoolean->yesNo($booleanVariable, false)
来使用视图中的Helper。后一个示例将在错误响应中留下空白字段。
过度?也许……但我认为它适合CakePHP结构,并且它是创建您自己的helper的一个很好的练习。
我正在使用CakePHP版本3.3.4中的helper。希望这对将来的人有所帮助。
简写:
<?= ($var)?'yes':'no' ?>
在显示数据时,可以选择显示字符串而不是int。这是一种简化的方法,因为您不需要提供任何代码或其他信息:
在视图中,$ itrue是布尔值:
<?php if($isTrue){echo "true";}else{echo "false";} ?>
我添加了(对于底部,jtesta答案)方法来获得图形表示-使用Foundation Icon Fonts 3:
public function checkX($value, $showFalse = true) {
return ($value) ? '<i class="fi-check"></i>' : (($showFalse) ? '<i class="fi-x"></i>' : '');
}