Как стать автором
Обновить

Совместное использование аутентификации yii1/yii2

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

Это статья не имеет смысла без первой части, в которой есть ответ «зачем это делать».

Она про методику плавной миграцию проекта с yii1 на yii2. Ее суть в том, что ветки проекта на yii1 и его новой версии на yii2 работают совместно на одном домене в одном виртуальном хосте, а миграция производится постепенно, мелкими шагами (по страницам, контролерам, модулям и т.п.).

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

После чего начинается самый психологически сложный этап: нужно создать минимальную инфраструктуру для старта. Я бы выделил 2 задачи: дублированный дизайн и сквозную аутентификацию пользователей.

Дублированию дизайна отводится первое место по скучности. Если не повезло, то можно просто скопировать / переверстать старый «1 в 1». Лично я всегда совмещал с редизайном. Т.е. интерфейс и дизайн значительно обновлялся и в этом плане, работа не тупая. Но тут каждому свое – я большое внимание уделяю интерфейсу и дизайну, кто-то наоборот, любит больше backend и консоль. Тем не менее, не зависимо от предпочтений, мимо этой задачи не пройти — сделать интерфейс придется, и объем работы будет достаточно большой.

Сквозная аутентификация немного интереснее, а работы будет поменьше. Как и в первой статье, тут не будет никаких откровений. Характер статьи: tutorial для тех, кто решает такую задачу в первый раз.

Если это ваш случай, то подробнее под катом
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

PHP, YII2 и формирование больших excel-файлов

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

Начало


Одна поддерживаемая нашей компанией учетно-отчетная система начала очень быстро разрастаться в количестве хранимых данных. Система написана на PHP с использованием фреймворка Yii2. Изначально отчеты строились через библиотеку PhpSpreadsheet, которая пришла на смену, уже давно ставшему deprecated, PhpExcel.

Среди разного вида отчетности был один очень крупный – фактически полный набор всех хранящихся в БД данных должен выгружаться в одну excel-таблицу. На начальном этапе проблем не возникало, но когда объем стал превышать многие сотни тысяч записей, то скрипт формирования выгрузки стал отваливаться в timeout limit.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии37

SOLID на практике. Принцип открытости-закрытости и ActiveQuery Yii2

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

Как-то в рабочей беседе один мой коллега-программист заметил, что всевозможные принципы и паттерны проектирования ПО хорошо применять, когда делаешь тестовые задания, однако в реальных, боевых проектах они как правило неприменимы. Так ли это на самом деле?

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии39

Новости Yii 2021, выпуск 1

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

Привет, сообщество!

Это первый выпуск новостей в 2021. Начало года вышло продуктивным. Мы начали активно релизить пакеты Yii 3, есть значительный прогресс с пока не релизнутыми пакетами. Улучшили инструментарий разработки, много всего исправили, убили лишние пакеты. И всё это параллельно с поддержкой Yii 2 и решением проблем с финансированием.

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии30

История о модульном подходе в digital агентстве

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

Всем привет. Меня зовут Сергей, я работаю в digital-агентстве Convergent лидером команды бэкэнд разработки. Одно из основных направлений работы агентства ⸺ это разработка под заказ веб-приложений. Такая деятельность подразумевает, что зачастую создается достаточно много однотипных проектов. Они могут отличаться механиками, но основные юзкейсы повторяются: регистрация, авторизация, личный кабинет, админка и т. д. В данной статье я хочу рассказать о том, как мы оптимизировали процессы переиспользования кода и пришли в итоге к модульному подходу, ну и затрону еще немного технической стороны вопроса. Основной язык программирования в компании — PHP, так что дальше я расскажу о работе с этим языком. В нашем случае он отлично подходит для создания сайтов различного уровня сложности, различных активаций и промо-кампаний.

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии5

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

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

В digital-агентстве Convergent, где я работаю, в потоке множество проектов, и у каждого из них может быть собственная админка. Есть несколько окружений (дев, стейдж, лайв). А ещё есть разные внутрикорпоративные сервисы (как собственной разработки, так и сторонние вроде Redmine или Mattermost), которыми ежедневно пользуются сотрудники. 

Наша команда всегда была распределённой между несколькими офисами, но с учётом событий последнего года все сотрудники перешли на удалёнку. Так мы столкнулись с необходимостью организовать всё многообразие внутренних и клиентских сервисов в единой системе.

Читать далее
Рейтинг0
Комментарии0

Yii 2 alpha

Время на прочтение1 мин
Количество просмотров17K
Вышла первая альфа версия Yii 2. Скачать в виде архива её можно с официального сайта. Там же приведены инструкции по установке через Composer.

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

Читать дальше →
Всего голосов 48: ↑42 и ↓6+36
Комментарии82

Пишем пространства с большой буквы в Yii 2.0

Время на прочтение2 мин
Количество просмотров14K
Не так давно вышла первая альфа Yii 2, уже можно знакомится подробнее с ним.

После многочисленных дебатов, авторы выбрали маленькие буквы для пространств. И их нельзя за это осуждать. Ведь все аргументы в пользу одного варианта или другого сводятся к личным предпочтениям.

Схожий случай с нескончаемой войной «пробелы vs. табуляция». Нам просто говорят: «Смиритесь с этим, не парьтесь».

ОК. Стараюсь смирится. Даже первое время получалось, кого интересует что там внутри фреймворка. Но ничего не получается.
Читать дальше →
Всего голосов 30: ↑20 и ↓10+10
Комментарии23

Создаем поведение (behavior) для Yii2

Время на прочтение7 мин
Количество просмотров80K
Часто, а на самом деле практически всегда, при создании сайта необходимо, чтобы страницы сайта открывались не по id сущности в базе, а по текстовому идентификатору, назовем его slug.

post/view/1 => post/view/testovaya-novost


(из url'а стоило бы убрать и view, но урок не о том)

Самым примитивным путем можно создать в таблице post поле slug, в модели Post соответственно появляется новый атрибут, в представление (view) добавляем новый input, в который ручками вбиваем slug.


<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;

/**
 * @var yii\web\View           $this
 * @var common\models\Post     $model
 * @var yii\widgets\ActiveForm $form
 */
?>

<div class="post-form">

	<?php $form = ActiveForm::begin(); ?>

	<?= $form->field( $model, 'name' )->textInput( [ 'maxlength' => 255 ] ) ?>
	<?= $form->field( $model, 'slug' )->textInput( [ 'maxlength' => 255 ] ) ?>
	<?= $form->field( $model, 'content' )->textarea( [ 'rows' => 6 ] ) ?>

	<div class="form-group">
		<?= Html::submitButton( $model->isNewRecord ? Yii::t( 'app', 'Create' ) : Yii::t( 'app', 'Update' ), [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ] ) ?>
	</div>

	<?php ActiveForm::end(); ?>

</div>


Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии28

Пример использования standalone actions в Yii2

Время на прочтение7 мин
Количество просмотров38K
При разработке сайта неотъемлемую часть занимает получение коллекций данных. Выборка по определённым условиям, пагинация. Каждый раз писать реализацию в контроллерах весьма занудно. Когда как можно один раз сделать расширяемую реализацию часто используемого функционала.

В данной статье будет приведен пример как при использовании функционала Standalone actions фреймворка Yii2 красиво организовать единообразную архитектуру, которую можно использовать во всех частях приложения.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии11

Пишем парсер с помощью XPath и Yii

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

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

В качестве примера для данной статьи мы будем использовать выданное демо форума XenForo и заранее созданной темой, откуда будем парсить типичные данные: заголовок, время создания и сам текст темы, при этом парсинг будет осуществляться в авторизированном аккаунте форума. Все остальные данные можно будет взять по аналогии.

Сам парсер реализуем в виде компонента для удобного использования в Yii2.
Читать дальше →
Всего голосов 18: ↑10 и ↓8+2
Комментарии16

13 апреля Yii 2 переходит в статус Beta

Время на прочтение1 мин
Количество просмотров5.6K
Меньше недели назад обновился Roadmap разработки любимого многими фрэймворка Yii2.

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

Вот некоторые, самые интересные из них (по сравнению с текущей альфой конечно)
Читать дальше →
Всего голосов 17: ↑9 и ↓8+1
Комментарии10

Yii 2.0 beta

Время на прочтение12 мин
Количество просмотров42K
Нам очень приятно сообщить о выходе бета-версии PHP фреймворка Yii 2. Вы можете загрузить его с yiiframework.com.

Бета включает в себя сотни новшеств, изменений и исправлений с релиза альфы.
Далее мы сделаем обзор наиболее важного, но сначала ответим на часто задаваемые вопросы.

Читать дальше →
Всего голосов 92: ↑88 и ↓4+84
Комментарии43

Сохранить здоровье %username%: поисковик спортивных игр

Время на прочтение5 мин
Количество просмотров19K
Я как любой айтишник провожу значительную часть жизни сидя на работе перед компьютером, иногда еще на том же таси еду на работу и с работы. Особенно тяжко приходится тем коллегам, кто работает удаленно или фрилансит. На работу идти не нужно, и бывают дни, когда по несколько дней не выходишь из дома.

Википедия и исследования намекают, что за все надо платить. Если вы сидите за компьютером по 12-14 часов в день, к 50 годам (а может и раньше) качество вашей жизни может значительно снизиться.


Решение – перерывы в работе и физическая активность. Плюс, если вы работаете дома, а не в коллективе, то для бодрого психического состояния было бы неплохо, чтобы выбранный вид физической активности был групповым и предполагал социальные взаимодействия. Но найти с кем и где поиграть в футбол — не такая уж простая задача.



Мы решили создать сайт, на котором будут собраны все футбольные, баскетбольные, волейбольные и хоккейные игры. Постараться с помощью технологий облегчить жизнь как игрокам, так и организаторам игр. Под хаброкатом расскажу о сути проекта, архитектуре и используемых технологиях.
Читать дальше →
Всего голосов 39: ↑30 и ↓9+21
Комментарии68

Книги по Yii2

Время на прочтение3 мин
Количество просмотров31K
Доброе времени суток читатель. Данный вопрос возник при изучении первой версии Yii (когда документацию прочел, но ещё есть не понятные для меня моменты).

image

Под катом предлагаю мини обзор списка книг которые на сегодняшний момент я нашёл, помимо официальной документации.
Читать дальше →
Всего голосов 19: ↑7 и ↓12-5
Комментарии11

Модульное тестирование поведения Yii2 с помощью Codeception

Время на прочтение8 мин
Количество просмотров45K
В разработке программного обеспечения написание автоматических тестов часто отодвигается на второй план более насущными проблемами. Так и в моем случае, код писать приходилось, а тесты к нему — нет. При этом давно хотелось попробовать модульное тестирование собственного кода, а тут под руку подвернулось поведение Yii2 ManyToMany Behavior, о котором уже писали на Хабре. Это поведение я сначала немного расширил, а затем решил собрать комплект тестов.

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

Далее мы рассмотрим настройку Codeception с модулем для Yii2 и создание тестов для поведения.
Узнать, как...
Всего голосов 15: ↑14 и ↓1+13
Комментарии12

Отлов и обработка исключений в Yii2

Время на прочтение3 мин
Количество просмотров35K
В Yii2 по-умолчанию все Exception обрабатываются, за это отвечает специальный обработчик. Если при обработке запроса возникает нехорошая ситуация (например, пришли некорректные данные от клиента), то можно выбросить исключение. Обработчик сформирует человекообразный ответ.

Интересно, что в таком случае ошибка “Warning: Uncaught exception” в лог ошибок не выводится. Может создаться впечатление, что все исключения перехватываются средствами фреймворка. Но это не так. На наш проект некоторое время назад натравили средство мониторинга (в нашем случае New Relic), которое информацию обо всех выброшенных исключениях отображает в ошибках (именно как “Warning: Uncaught exception”), считает эти исключения необработанными. С этим надо было что-то делать.

Ниже расскажу о схеме обработки исключений, которую в итоге выбрал. Вполне возможно, что кому-то это еще пригодится.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии12

Набор Yii2 Behavior для хранения деревьев в БД и их совместного использования

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

Привет, Хабр!

В одном своём проекте на Yii2 мне захотелось совместить Adjacency List и Nested Sets. Причём так, чтобы в случае отключения поведения Nested Sets, функционал оставался полностью работоспособен. Затем я понял, что Nested Sets мне не нужен, т. к. в базе всё равно приходилось хранить полный путь, поэтому на замену я решил применить Materialized Path. Имеющийся на GitHub Behavior (matperez/yii2-materialized-path) был недостаточно функционален, поэтому пришлось написать свой, а так как я недавно уже писал свои поведения для Adjacency List и Nested Intervals, я решил, почему бы не сделать набор таких поведений с единым API, и возможностью произвольно подключать их к модели одновременно, используя преимущество каждого.

Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии11

Jii: конфигурация и масштабирование

Время на прочтение4 мин
Количество просмотров9.1K
Привет всем хабровчанам, любителям Yii и Node.js. Давно небыло статей про Jii, но работа не стояла на месте и мне есть что рассказать!
В этой статье мы рассмотрим способы конфигурирования приложения и запуск приложений как несколько процессов.

Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии2