Intereting Posts
Печать на стороне сервера на сервере Ubuntu Server mysql_connect возвращает «Не удается подключиться к локальному серверу MySQL через сокет» при удаленном соединении с хостом? Функция MySQL String, эквивалентная функции PHP ucwords () php md5, который дает тот же результат, что и c # Как обрабатывать пользовательские заголовки с запросом на предварительный рейс CORS? AJAX – CodeIgniter Как диагностировать эту сегментацию PHP-Code-Coverage и поврежденные ошибки zend_mm_heap Prestashop: файлы cookie сеансов и логин Preg_replace или preg_replace_callback? как получить индекс родительского массива из многомерного массива в php проверка формы с помощью javascript vs php Вставка данных из динамической формы регистрации с помощью переключателей Как я могу получить прямую ссылку Instagram из объекта twitter? Заголовок PHP (Location: …): изменение URL-адреса в адресной строке Как наложить длинные строки? Как предотвратить межсайтовый скриптинг

symfony, twig – фильтр по умолчанию для всех переменных в шаблоне

Предположим, я хочу отобразить больший набор данных, и, возможно, существует много значений null / empty. Я не хочу определять фильтр по умолчанию для каждой переменной. Есть ли способ показать значение по умолчанию для всех (пустых, нулевых) переменных в шаблоне (например: «не указано»).

РЕДАКТИРОВАТЬ:

веточка:

{# src/KuMiV/EmployeeBundle/Resources/views/Other/detailItem.html.twig #} {% extends "base.html.twig" %} ... {% block content %} <h3 class="sub-header">Personenbezogene Angaben</h3> <div class="row"> <div class="col-md-3"> <label> ID </label><p>{{ employee.id }} </p> </div> <div class="col-md-3"> <label> Titel </label><p>{{ employee.title|default('keine Angabe') }} </p> </div> <div class="col-md-3"> <label> Vorname </label><p>{{ employee.firstName }} </p> </div> <div class="col-md-3"> <label> Nachname </label><p>{{ employee.lastName }} </p> </div> </div> <div class="row"> <div class="col-md-3"> <label> Geschlecht </label><p>{{ employee.gender }} </p> </div> <div class="col-md-3"> <label> Email </label><p>{{ employee.email|default('keine Angabe') }} </p> </div> <div class="col-md-3"> <label> Telefon 1</label><p>{{ employee.phone1|default('keine Angabe') }} </p> </div> <div class="col-md-3"> <label> Telefon 2 </label><p>{{ employee.phone2|default('keine Angabe') }} </p> </div> </div> ... {% endblock content %} 

контроллер:

 class DefaultController extends Controller { public function detailAction($id) { $employee = $this->getDoctrine("Employee") ->getRepository("EmployeeBundle:Employee") ->find($id); return $this->render('EmployeeBundle:Other:detail.html.twig', array( 'employee' => $employee, )); } } 

Для этого вам может потребоваться создать пользовательское расширение ветки.

 namespace Employee\EmployeeBundle\Twig; class EmployeeExtension extends \Twig_Extension { public function getFilters() { return array( new \Twig_SimpleFilter('setDefaults', array($this, 'setDefaultFilter')), ); } public function setDefaultFilter($employee) { $employee.title = !empty($employee.title) ? $employee.title : 'keine Angabe'; $employee.email = !empty($employee.email) ? $employee.email : 'keine Angabe'; //... So on; continue for others return $employee; } public function getName() { return 'employee_extension'; } } 

Имейте в виду, чтобы зарегистрировать расширение как услугу:

 services: employee.twig.employee_extension: class: Employee\EmployeeBundle\Twig\EmployeeExtension tags: - { name: twig.extension } 

Теперь вы можете использовать его в своем файле twig как:

 {% set employee = employee|setDefaults %} 

Тем не менее, я считаю, что фильтр по default в ветке лучше.