Используя cakephp 3, у меня есть булевский [tinyint (1)] в таблице, а в шаблонах редактирования и добавления есть флажок в форме, но как я могу получить индексировать и просматривать шаблоны, чтобы отобразить строку, такую как true/false или yes/no вместо 1/0. Я сопоставляю их в действиях контроллера или есть опция, которую я могу добавить к шаблонам?Получить отображение Cakephp 3 true/false для booleans
ответ
Когда вы входите, чтобы отображать данные, вы можете выбрать отображение строки вместо int. Это упрощенный подход, поскольку вы не предоставили какой-либо код или другую информацию:
В представлении $ isTrue будучи булево:
<?php if($isTrue){echo "true";}else{echo "false";} ?>
просто:
<?= ($var)?'yes':'no' ?>
Ответы даны обе работа хорошо.
Я создал класс 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. Надеюсь, это поможет кому-то в будущем.
Я добавил (для нижней части, jtesta ответа) метода, чтобы получить графический представление - "проверить" или "х" с помощью Foundation Icon Fonts 3:
public function checkX($value, $showFalse = true) {
return ($value) ? '<i class="fi-check"></i>' : (($showFalse) ? '<i class="fi-x"></i>' : '');
}
- 1. Значки свойств профиля DotNetNuke 'TrueFalse'
- 2. CakePHP 3 Получить связанные данные
- 3. Dozer mapping Booleans
- 4. CakePHP 3: тесты для контроллера
- 5. аутентификации OAuth2 для CakePHP 3
- 6. Cakephp 3 pagination - как получить активную ссылку
- 7. отображение выбранных флажков в cakephp
- 8. Хотите получить подкатегорию prodcuts в cakephp 3
- 9. VolatileWrite booleans
- 10. CakePHP 3- Отображение сообщений об ошибках и buildRules в контроллере
- 11. CakePHP 3.x как получить session_id
- 12. CakePHP 3: как получить все ассоциации таблицы?
- 13. Получить текущее имя базы данных - CakePHP 3
- 14. Как получить глобальные параметры в cakephp 3?
- 15. Запрос получить данные в cakephp 3
- 16. CakePHP 3: Попытка получить свойство необъектных
- 17. CakePHP 3: Cookies tutorial
- 18. получить данные из 3-ассоциированной таблицы в CakePHP 3.x
- 19. cakephp 3 получить объект изменений свойств для зависимой модели (таблица)
- 20. Условия для paginate для ownToMany CakePHP 3
- 21. Array of booleans extension
- 22. CakePHP 3 Валидаторы для объединения или слияния
- 23. CakePHP 3: многоуровневое объединение
- 24. Summing Booleans в Dataframe
- 25. booleans с 3 или более выражениями в сценарии sh
- 26. CakePHP 3: конкретная авторизация для префикса администратора
- 27. Cakephp 3 - переменная для всех моделей
- 28. CakePHP 3.x: запрос для связанных должностей
- 29. Backend/Frontend CakePHP 3
- 30. CakePHP 3 Эквивалент Containable
я использую [помощник] (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
Это не слишком много, это программирование! Теперь, если вы решите, что на самом деле хотите отобразить yes/no в нижнем регистре, в верхнем регистре, как true/false, вы меняете только одно место, а не сотни мест. Отличный ответ. – RyanfaeScotland