获取Cakephp 3中布尔值的true/false显示

3

使用CakePHP 3,我在一个表中有一个布尔值[tinyint(1)],编辑和添加模板上有一个复选框,但是如何让索引和查看模板显示一个字符串,例如true/false或yes/no而不是1/0。我应该在控制器操作中映射它们,还是可以在模板中添加选项?

4个回答

6

这两个答案都可以正常工作。

我创建了一个 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中使用了这个助手。希望对未来的某些人有所帮助。


我使用一个助手来默认显示一些标题的图标,用户可以轻松地调整他的bake模板来实现此功能 :) - mark
这不是过度设计,这就是编程!现在如果你决定实际上想要以小写、大写、作为真/假等方式显示“是/否”,那么你只需要在一个地方进行更改,而不是在数百个地方进行更改。非常好的答案。 - RyanfaeScotland

3

简单来说:

<?= ($var)?'yes':'no' ?>

0

当您进入显示数据时,可以选择显示字符串而不是整数。这是一种简化的方法,因为您没有提供任何代码或其他信息:

在视图中,$isTrue 是布尔值:

<?php if($isTrue){echo "true";}else{echo "false";} ?>

0
我添加了一个方法(来自jtesta的答案)以获取图形化表示 - 使用Foundation Icon Fonts 3中的“检查”或“x”:
public function checkX($value, $showFalse = true) {
    return ($value) ? '<i class="fi-check"></i>' : (($showFalse) ? '<i class="fi-x"></i>' : '');
}

它看起来的样子


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接