Спочатку я написав розлоге передмову до цього тексту, а потім видалив його. Загалом, цей текст для тих, хто як і я, любить спочатку зробити, а потім вже розбиратися з тим, що ж він таке зробив. Щоб зібрати нижеизложенную інформацію мені довелося три дні посилено шукати в різних джерелах. Так що, сподіваюся кому і придасться. Це годна шпаргалка.

1. Встановлюєте Yii2 Basic на сервер, як написано в документації. Описано там все чітко і по справі, додати мені нічого.

Хіба що ось: локально на OpenServer поставило без сучка, без задирки. А ось віддалено, на KVM Ubuntu 16.04 з 1гб оперативки Composer-не вистачило пам'яті. Бився дві години, так і не подужав. Благо, що з локального сервера на віддалений сайт можна легко перенести простим копіюванням.

2. Повторюся, установка — basic (припустимо, в папку /www/site/basic, але далі ми для простоти викладу будемо вести відлік саме від папки basic в яку ви створили проект, як рекомендується в керівництві).

Папку basic/web відразу встановлюєте як DocumentRoot — як це зробити, теж є в офіційному керівництві російською мовою.

Читати далі →

Yii2: Робимо модуль для керування модулями

Вітаю всіх! На поточному проекті ми використовуємо Yii2 і в процесі розробки знадобилася якась сутність як модуль.

У Yii2 вже реалізована модульна система, але є один мінус у тому, що модуль не дозволяє виводити один модуль в іншому модулі, а використання віджетів теж не підходить, оскільки це частина виду і не вміє обробляти дії, наприклад входить POST-запит (хоча один час ми використовували віджети так з якимись милицями).

Читати далі →

Віджет багатомовності в YII2 без використання бази даних

Приклад інтернаціоналізації сайту на Yii2 на двох мовах: ru en. У Yii2 вже вбудований компонент відповідає за інтернаціоналізацію, називається він i18n. Для того що б можна було почати ним користуватися, досить додати його у конфігурацію програми в розділ components.

Я використовую шаблон advanced тому розташування файлів можуть відрізнятися.

Мета

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

Читати далі →

Аспект. Знайти і икапсулировать мінливість на стику областей

В цьому пості хочу опублікувати свої думки про поняття мінливості в складних програмних продуктах, які поширюються копіями і обслуговують різні, несхожі один на одного підприємства (Enterprise рішення). Я дуже зрадів, коли під мікроскопом розглянув цю саму мінливість і помітив там «аспект».

Аспект — це частина програми, яка обслуговує стик кількох предметних областей і вносить елемент унікальності в них (через програмування мінливості). Саме там, на стику, можна знайти щось нове, інноваційне, унікальне. Часто успішні бізнеси тримаються на цих маленьких, але унікальних особливостях відомого у всьому світі процесу, і жодне з існуючих архаїчних IT рішень не може бути інтегрована на таке інноваційне підприємство.
Читати далі →

Yii2: Кастомізація Bootstrap з допомогою Less

image

У Yii2 і безлічі його сторонніх розширень використовується Bootstrap. Зазвичай Bootstrap не замінюють чимось іншим, адже з ним досить зручно працювати, і на вигляд він цілком естетичний. Якщо захотілося освіжити інтерфейс програми, то може бути не дуже втішно перекрити купи css-властивостей. Обігові «шкурки» з bootswatch пропонувати не буду, приємніше взяти препроцесор і перевизначити кілька змінних. Перетворити вигляд сайту таким способом можна грунтовно. Покажу на прикладі Less, так як актуальний бутстрап написаний на ньому. При бажанні можна підмінити дефолтний пакет на Sass-івський або Stylus-івський і змінити наведений далі код відповідно препроцессору.

Читати далі →

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

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

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

В даній статті спробую розкрити основні нюанси реалізації системи демонів для PHP і навчити консольні команди Yii2 демонизироваться.

Останні 3 роки я займаюся розробкою та розвитком досить великого корпоративного порталу для однієї групи компаній. Я, як і багато, зіткнувся з проблемою, коли рішення задачі, яку вимагає бізнес, не вкладається ні в які таймаут. Зробіть отчетик в excel на 300 тис. рядків, відправте розсилку на 1500 листів і так далі. Природно, такі завдання повинні вирішуватися фоновими завданнями, демонами і crontab-ами. У рамках статті я не буду приводити порівняння кронов і демонів, ми для вирішення подібних завдань вибрали демонів. При цьому важливою вимогою для нас стала можливість мати доступ до всього, що вже написано для бекенду, відповідно, демони мають бути продовженням фрейворка Yii2. З цієї ж причини нам не підійшли вже готові рішення типу phpDaemon.

Під катом готове рішення для реалізації демонів на Yii2, що у мене вийшло.

Читати далі →

Жадібне завантаження в Yii2, для тих хто хоче зрозуміти що це таке

Пост розповідає для чого необхідно використовувати «жадібне завантаження», замість «ледачою завантаження», не претендує на ідеал. І навряд чи зацікавить професіоналів, більше підходить для початківців у вивченні YII2.

Використовуємо жадібне завантаження в своєму додатку. Припустимо у нас є дві таблиці з постами і категоріями. У кожного поста можлива одна категорія, у категорій 1 або більше постів.

bd - mediarise.ru

Читати далі →

Як почати розробку великого, нетипового проекту. Практичний посібник

image
Вибір платформи для бек-ендом
Щоб створити якісний і продуктивний Веб-додаток, необхідно приділити належну увагу вибору платформи для розробки. Цим потрібно зайнятися відразу ж після того, як ви ознайомилися, які завдання має виконувати це додаток.
В даному випадку, важливим чинником в технічному завданні була приблизно високе навантаження на сервіс. На ринку є багато хороших інструментів, з допомогою яких можна вирішити поставлену задачу. Деякі ми використовуємо в розробці, але в цей раз вибір все-таки зупинився на Yii2.
Читати далі →