2015-09-17 3 views
2

Используя cakephp 3, у меня есть булевский [tinyint (1)] в таблице, а в шаблонах редактирования и добавления есть флажок в форме, но как я могу получить индексировать и просматривать шаблоны, чтобы отобразить строку, такую ​​как true/false или yes/no вместо 1/0. Я сопоставляю их в действиях контроллера или есть опция, которую я могу добавить к шаблонам?Получить отображение Cakephp 3 true/false для booleans

ответ

0

Когда вы входите, чтобы отображать данные, вы можете выбрать отображение строки вместо int. Это упрощенный подход, поскольку вы не предоставили какой-либо код или другую информацию:

В представлении $ isTrue будучи булево:

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

Ответы даны обе работа хорошо.

Я создал класс 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" : ""); 
} 

} 

?> 

Помощник используется в стандартной конвенции путем включения $this->loadHelper('FormatBoolean'); в методе инициализации в файле AppView.php.

Затем вы используете Помощник на ваш взгляд, включив в него $this->FormatBoolean->yesNo($booleanVariable) или $this->FormatBoolean->yesNo($booleanVariable, false). Последний пример оставит поле пустым в ложном ответе.

Overkill? Возможно ... но я думаю, что это вписывается в структуру CakePHP, и это было хорошее упражнение в создании вашего собственного помощника.

Я использую помощник в версии 3.3.4 CakePHP. Надеюсь, это поможет кому-то в будущем.

+0

я использую [помощник] (https://github.com/dereuromark/cakephp-tools/blob/master/src/View/Helper/FormatHelper.php#L389) для отображения значков с некоторыми названиями по умолчанию, можно легко настроить его [испечь шаблоны] (https://github.com/dereuromark/cakephp-setup/blob/master/docs/Console/Bake.md) – mark

+0

Это не слишком много, это программирование! Теперь, если вы решите, что на самом деле хотите отобразить yes/no в нижнем регистре, в верхнем регистре, как true/false, вы меняете только одно место, а не сотни мест. Отличный ответ. – RyanfaeScotland

0

Я добавил (для нижней части, jtesta ответа) метода, чтобы получить графический представление - "проверить" или "х" с помощью Foundation Icon Fonts 3:

public function checkX($value, $showFalse = true) { 
    return ($value) ? '<i class="fi-check"></i>' : (($showFalse) ? '<i class="fi-x"></i>' : ''); 
} 

Image how it loks like

Смежные вопросы