Деревья в PHP + Twig 2.0

Предположим, есть задачка, вывести дерево.

Под рукой PHP, а как view — Twig.

Пусть структура данных на backend будет такой:

Тогда простроить дерево можно так:

Получится вложенный список из ul и li.

Как выбрать только необходимые поля в реляции (связи) Laravel

Иногда требуется выбрать не всю таблицу, а только некоторые поля из связи в контроллере. Сделать это можно так:

 

Blade Foreach: первый/последний элемент массива

Шаблоны blade используются для представления данных, нам нужно добавить некоторые проверки и If структуры. Один из примеров это цикл @foreach, когда нужно выполнить какие-либо действия с первым или последним элементом массива.  Blade не поддерживает эту функциональность самостоятельно, итак, что же нам делать?

Под капотом, Blade-файлы в действительности преобразуются в чистый PHP.  Итак, хитрость в том, что мы можем использовать любую функцию из PHP. И с массивами у нас есть две полезных функции что бы получить первый и последний элементы массива:

  • end($array) – перемещает внутренний указатель массива к последнему элементу и возвращает его значение.
  • reset($array) – перемещает внутренний указатель массива к первому элементу и возвращает его значение.

Итак, как это выглядит в настоящем примере с Blade? Предположим, мы хотим скрыть каждый элемент div, кроме первого:

@foreach ($menu as $item)
  <div @if ($item != reset($menu)) class=«hidden» @endif>
    <h2>{{ $item->title }}</h2>
  </div>
@endforeach

Похожий пример — что если мы хотим добавить CSS-класс к последнему элементу меню?

@foreach ($menu as $item)
  <div @if ($item == end($menu)) class=«no_margin» @endif>
    <h2>{{ $item->title }}</h2>
  </div>
@endforeach

Это все. Как вы можете видеть Blade не только шаблонизатор, он обладает мощью структур и функций PHP

 

Перевод

Человекочитаемый размер файла в PHP

Маленькая функция для преобразования размера  в байтах в человекочитаемый вид:

Использование

Источник

Миграция пользователей на безопасный алгоритм хеширования в Symfony

Ваше приложение может использовать старый, небезопасный алгоритм хеширования для хранения пароля, такой как MD5 (без использования соли)

Эта статья объясняет как преобразовать уже имеющиеся пароли, зашифрованные уязвимым алгоритмом в пароли зашифрованные с использованием безопасного метода хеширования (например с использованием Bcrypt )

Что бы решить проблему, мы сделаем конвертацию на лету, когда пользователь успешно входит в систему. Будем использовать интерфейс  EncoderAwareInterface

login listener и использовать не очень хорошо известные параметры в  security.yml.
Continue reading

Laravel: Like для коллекций

В коллекциях Laravel 5.1 нет функции like для коллекций, но можно написать подобное поведение при помощи filter.

SQL like preg_match
% .*
_ .

 

PHP Lint

Проверка PHP-кода на ошибки, cli.

Flat array to nested in php

Requirements = PHP 5.3

Usage:

Thanks! http://stackoverflow.com/a/27360654/1886270

Добавление тега rel=canonical в OpenCart

OpenCart бесплатная система для создания интернет-магазинов. Насмотря на свою поулярность, некотоые функции отсутствуют. Это особенно заметно в SEO. OpenCart имеет инструмент добавления тега rel=”canonical” на страницы товаров, но нет возможности добавить данный тег на страницу категорий или же на не менее важную домашнюю страницу.

Если установить OpenCart без исправления этой проблемы, поиск Google по запросу site:yourdomain.com вернет миллионы вариантов для каждой категории, страницы будут дублироваться.

Continue reading

Разбор GET (Query) параметров на Dart

Потребовалось разобрать URL текущей страницы и получить значения GET-параметров по их имени. Набросал функцию:

Данная функция принимает имя параметра, а возвращает его значение, если он найден, иначе пустую строку.