Обновить
0

Yii *

Фреймворк, реализующий парадигму MVC

Сначала показывать
Порог рейтинга
Уровень сложности

Yii2: Делаем модуль для управления модулями

Время на прочтение8 мин
Количество просмотров15K
Приветствую всех! На текущем проекте мы используем Yii2 и в процессе разработки понадобилась некая сущность как модуль.

В Yii2 уже реализована модульная система, но есть один минус в том что модуль не позволяет выводить один модуль в другом модуле, а использования виджетов тоже не подходит, т.к. это часть вида и не умеет обрабатывать действия, например входящий POST-запрос (хотя одно время мы использовали виджеты так с некими костылями).
Читать дальше →

Виджет мультиязычности в YII2 без использования базы данных

Время на прочтение3 мин
Количество просмотров15K
Пример интернационализации сайта на Yii2 на двух языках: ru и en. В Yii2 уже встроен компонент отвечающий за интернационализацию, называется он i18n. Для того что бы можно было начать им пользоваться, достаточно добавить его в конфигурацию приложения в раздел components.

Я использую шаблон advanced поэтому расположение файлов могут отличаться.

Цель

  1. переключение сайта между двумя языками: ru и en;
  2. отображение языка в адресной строке в виде site.com/en/;
  3. автоматическое перенаправление пользователя на наиболее подходящий для него язык, если он перешел на сайт без указания языка;
  4. хранение переводов должно осуществляться в PHP файлах в виде массивов;
Читать дальше →

Как не нужно использовать паттерн Repository

Время на прочтение7 мин
Количество просмотров60K
image

Данная статья является неким опытом, который был приобретен в результате весьма неприятной архитектурной ошибки, допущенной мной при длительной разработке проекта на Laravel5.

Я постараюсь рассказать, как использовал паттерн Repository в проекте, какие достоинства и недостатки были выявлены, как это повлияло на разработку в целом и какой профит был получен.
Читать дальше →

Пример создания практичной Debug панели в Yii

Время на прочтение2 мин
Количество просмотров6.2K
Написать свою Debug-панель в Yii очень просто. Поэтому рассмотрим чуть практичную (с вызовом api PHPStorm) панель просмотра вьюшек.
Читать дальше →

Yii2-advanced: альтернативное размещение папок для нескольких приложений

Время на прочтение4 мин
Количество просмотров15K
Хочу поделиться альтернативным рецептом файловой структуры для нескольких приложений в Yii2-advanced, не прибегая к модулям. Внешние отличия, к которым мы придем, выглядят следующим образом:

Конечная файловая архитектура

Читать дальше →

Блеск и нищета php. Эволюция языка от 4.x к 7.1

Время на прочтение5 мин
Количество просмотров43K

image


По слухам, сегодня должен состояться релиз 7.1. Поэтому хотелось бы немного оглянуться назад и посмотреть, а как же php вырос из набора костылей и подпорок в полноценный язык для веба. Прямо по шагам, т.е. по версиям. А в конце хотелось бы немного поразжигать поразмыслить о роли php в современной экосистеме.


Давайте мысленно вернемся во времена php4, когда получили своё развитие wordpress, bitrix и миллионы других CMS и домашних страничек.

Читать дальше →

Новости Yii 2. №1

Время на прочтение2 мин
Количество просмотров10K

С тех пор, как расширения PHP фреймворка Yii переехали в отдельные репозитории и начали релизиться независимо, изменений на каждый релиз в них стало меньше и писать на хабре про каждое отдельно стало как-то не правильно. То же и про новости. Вроде и важно, но отдельно на статью не тянет. Однако, новостей накопилось прилично, поэтому предлагаю почитать самые интересные.

Читать дальше →

Как мы переводили сервер на php 7

Время на прочтение3 мин
Количество просмотров14K
php 7 вышел почти год назад, на носу уже версия 7.1, которая находится в стадии релиз кандидата. Интернет полон положительных отзывов, что же — пора использовать его в продакшене. Об опыте переезда на него боевого сервера с тридцатью проектами и пойдет речь в этой статье.

Седьмая версия открывает нам много новых возможностей, но основным убийственным нововведением php7, я считаю, увеличение производительности и уменьшение потребления памяти. Во внутренних проектах мы его давно попробовали, убедились, что он дает прирост не только в синтетических тестах, было принято решение переводить на него весь продакшен.
Читать дальше →

Yii2: Кастомизация Bootstrap с помощью Less

Время на прочтение4 мин
Количество просмотров11K
image

В Yii2 и множестве его сторонних расширений используется Bootstrap. Обычно Bootstrap не заменяют чем-то другим, ведь с ним достаточно удобно работать, и на вид он вполне эстетичен. Если захотелось освежить интерфейс приложения, то может быть не очень отрадно переопределять кучи css-свойств. Обиходные «шкурки» из bootswatch предлагать не буду, приятней взять препроцессор и переопределить несколько переменных. Преобразить облик сайта таким способом можно основательно. Покажу на примере с Less, так как актуальный бутстрап написан на нем. При желании можно подменить дефолтный пакет на Sass-овский или Stylus-овский и изменить приведенный далее код соответственно препроцессору.
Читать дальше →

Yii 2.0.10

Время на прочтение3 мин
Количество просмотров15K

Вышла новая версия PHP-фреймворка Yii, включающая в себя более 80 улучшений и исправлений. Инструкции по установке и обновлению можно найти по адресу. Стоит отметить, что в релиз вошли четыре небольших изменения, которые могут повлиять на работу существующих приложений. Обязательно прочитайте UPGRADE.md.


Спасибо замечательному сообществу за отличные пулл-реквесты и обсуждения. Без вас этого релиза не было бы! За процессом разработки Yii 2 можно начать следить, поставив звёздочку на GitHub. Подписывайтесь на наш Twitter и Facebook. Обсудить релиз можно в комментариях.


Полный список изменений можно найти в CHANGELOG. Далее мы рассмотрим наиболее интересные.

Читать дальше →

Валидация данных вложенных документов MongoDB в Yii2

Время на прочтение3 мин
Количество просмотров4.6K

Возможно, всё что я напишу ниже – очевидно, и все этим пользуются давно, но я вот недавно только это понял и придумал, так что, может, кому и пригодится.


Yii2 и расширение yii2-mongodb к сожалению, не работает с вложенными документами, тем самым оставляя за бортом существенное преимущество документоориентированной БД.
В документации предлагают использовать расширение для вложенных документов, но можно обойтись и без него.
Предположим, у нас есть модель, формирующая PDF-файл для загрузки, и мы хотим следить за количеством его скачиваний, IP-адресами скачавших и, например, временем, когда файл был загружен.

Читать дальше →

Как использовать UrlManager для настройки роутинга и создания «дружелюбных» URL

Время на прочтение13 мин
Количество просмотров42K

Здравствуйте, дорогие читатели! Я продолжаю цикл статей о том, как мы разрабатывали нетипичный, крупный проект с использованием Yii2 framework и AngularJS.

В предыдущей статье я описал преимущества, выбранного нами стека технологий, и предложил модульную архитектуру нашего приложения.

В этом материале речь пойдет о настройке роутинга и создании URL при помощи urlManager для каждого модуля по отдельности. Также разложу по полочкам процесс создания собственных правил для специфических URL, с помощью написания класса, который расширяет UrlRuleInterface. В завершении опишу, как мы реализовали генерацию и вывод мета тегов для публичных страниц сайта.

Самое интересное под катом.
Читать дальше →

Пример реализации autocomplete с использованием FTS движка PostgreSQL tsearch2

Время на прочтение4 мин
Количество просмотров8.9K

Введение


Когда-то давно я написал для себя ежедневник для ведения дел, заметок и фиксации движения по разным задачам. Сделан он был изначально на связке PHP + Kohana 2 + PostgreSQL. Со временем я переписал все на Yii (первой и тогда единственной версии). Для полнотекстового поиска был задействован встроенный в PostgreSQL движок tsearch2. Много лет я пользовался системой, понемногу ее развивал и пришел к тому, что объем текстов в ней накопился приличный. Поиском приходится пользоваться весьма часто и для повышения его удобства я задумал прикрутить к нему autocomplete из состава пакета JQuery UI.
Читать дальше →

Ближайшие события

Простая система демонов для Yii2

Время на прочтение14 мин
Количество просмотров33K
В данной статье постараюсь раскрыть основные нюансы реализации системы демонов для PHP и научить консольные команды Yii2 демонизироваться.

Последние 3 года я занимаюсь разработкой и развитием достаточно большого корпоративного портала для одной группы компаний. Я, какие и многие, столкнулся с проблемой, когда решение задачи, которую требует бизнес, не укладывается ни в какие таймауты. Сделайте отчетик в excel на 300 тыс. строк, отправьте рассылку на 1500 писем и так далее. Естественно, такие задачи должны решаться фоновыми заданиями, демонами и crontab-ами. В рамках статьи я не буду приводить сравнение кронов и демонов, мы для решения подобных задач выбрали демонов. При этом важным требованием для нас стала возможность иметь доступ ко всему, что уже написано для бэкенда, соответственно, демоны должны быть продолжением фрейворка Yii2. По этой же причине нам не подошли уже готовые решения типа phpDaemon.

Под катом готовое решение для реализации демонов на Yii2, которое у меня вышло.
Читать дальше →

Работа с PGPool + ORM Yii2

Время на прочтение1 мин
Количество просмотров5.4K
Сегодня будет небольшой «хак» для ORM Yii2, если вы используете PGPool.
Да, это опять некие костыли (как и в первой моей статье), но мне кажется, что эти (учитывая победное шествие PostgreSQL) могут и пригодится даже большему числу людей.

Все кто работают с PGPool в режиме Master-Slave рано или поздно столкнутся с задачей, когда делать селекты надо непременно из мастера. Благо разработчики о нас позаботились и дали такую возможность. Кто видел схему работы PGPool меня поймут: пишем перед селектом нехитрую строчку /*NO LOAD BALANCE*/ и наш запрос PGpool отправит в мастер базу.

Проблемы начинаются тогда, когда нам нужно использовать ORM.
Читать дальше →

Вариант работы с кешем без доступа к бэкенду на примере Yii2

Время на прочтение4 мин
Количество просмотров6.3K
Я веб-разработчик и не так давно (подрабатывая на стороне от основной работы) мне пришлось решать довольно нестандартную в наших кругах задачу: разработать фронтенд на Yii2 к сайту, весь бэкенд которого написан на древнегреческом ASP VBScript (простите, я уже забыл, как правильно это писать: просто ASP, или просто VBScript?).
Читать дальше →

Держите данные под контролем

Время на прочтение7 мин
Количество просмотров12K
Не секрет, что пользовательским данным доверять нельзя. Поэтому однажды человек и придумал валидацию данных. Ну а я, интереса ради и пользы для, написал свою реализацию валидатора на PHP.
Читать дальше →

Yii 2.0.9

Время на прочтение3 мин
Количество просмотров13K

Вышла версия 2.0.9 PHP-фреймворка Yii. Минорный релиз содержит около 60 небольших улучшений и исправлений. Инструкции по установке можно найти на официальном сайте.


В данной версии есть два изменения, которые, хоть это и маловероятно, могут затронуть ваши приложения. Ознакомьтесь с UPGRADE.md.


Спасибо сообществу Yii за пулл-реквесты и обсуждения.
Этот релиз вышел благодаря вам!


За разработкой фреймворка можно наблюдать на GitHub. Также у нас есть Twitter
и Facebook.


Читать дальше →

Как начать разработку крупного, нетипичного проекта. Практическое пособие

Время на прочтение6 мин
Количество просмотров28K

image


Выбор платформы для бекенда

Чтобы создать качественное и производительное Web-приложение, необходимо уделить должное внимание выбору платформы для разработки. Этим нужно заняться сразу же после того, как вы ознакомились, какие задачи должно выполнять это приложение.


В данном случае, немаловажным фактором в техническом задании была предположительно высокая нагрузка на сервис. На рынке есть много хороших инструментов, с помощью которых можно решить поставленную задачу. Некоторые мы используем в разработке, но в этот раз выбор все-таки пал на Yii2.

Читать дальше →

Вышел официальный HTTP клиент для Yii 2

Время на прочтение1 мин
Количество просмотров33K

Команда Yii выпустила официальное расширение-клиент HTTP. Написано почти целиком Павлом Климовым. До последнего времени не было тегнуто как релиз из за несовместимости с PSR-7, хотя уже много где использовалось. После долгих обсуждений было решено выпускать без PSR-7. К нему, возможно, вернутся в 2.1.x.


Выполнение HTTP запроса выглядит вот так:


use yii\httpclient\Client;

$client = new Client();
$response = $client->createRequest()
    ->setMethod('post')
    ->setUrl('http://example.com/api/1.0/users')
    ->setData(['name' => 'John Doe', 'email' => 'johndoe@domain.com'])
    ->send();
if ($response->isOk) {
    $newUserId = $response->data['id'];
}

https://github.com/yiisoft/yii2-httpclient

Вклад авторов