Как добавить новую опцию во все консольные команды в Symfony 3

Иногда требуется добавить опцию или аргумент в консольные команды, но прописывать в каждую команду, если их 100+ или это вендорные консольные команды , долго или невозможно. Хорошим решением в данном случае будет использование слушателя событий. (далее…)

Google PageSpeed Insights 100/100

Недавно решил оптимизировать один из своих сайтов под Google PageSpeed Insights. Конечно, хочется максимального результата 100/100, но не все так просто. Далее расскажу как добиться такого результата.

(далее…)

Symfony 2 и 3. Как использовать сервис-контейнер в конструкторе контроллера

Бывают ситуации, когда в конструкторе контроллера нужно вызвать сервис-контейнер, но выводится ошибка:

Error: Call to a member function get() on null

in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php at line 350

Есть простое решение данной проблемы.

(далее…)

Как убрать scroll на iOS

Мобильная версия сайта на iOS всегда отображается со скроллом, даже если страница имеет высоту 100vh и в css скролл отключен. Для отключения этого скролла пропишите в javascript следующую строку:

document.addEventListener('touchmove', function(e) {e.preventDefault();}, true);

 

Сортировка массива объектов по свойству

Если есть массив объектов и необходимо его отсортировать по полю (или нескольким), то то для этого существует функция usort ([массив], callable функция).

Ниже описан пример сортировки массива объектов с помощью статического метода в классе объекта. (далее…)

Symfony 2. Мультиязычность контента

Недавно передо мной стояла задача сделать мультиязычность контента у сайта, написанного с использованием фреймворка symfony 2. Из мануалов было ясно, что встроенная мультиязычность подходит только для перевода интерфейсов. Мне нужна возможность определения у каких полей сущностей будет перевод, а у каких не будет перевода.

Нашел библиотеку Doctrine2 Behaviors от KnpLabs. В документации есть инструкция по использованию с анотациями. Но у меня сущности описываются в yml файлах. С yml файлами, как оказалось тоже все работает, главное — правильно описать. (далее…)