МЕСТО ПОД РЕКЛАМУ
20 Февраль 2017

Быстрая доработка сайта на yii2

Итак, волею судеб достался мне на сопровождение сайт дверной-эксперт.рф реализованный на php фреймворке yii2, с весьма аскетичным административным интерфейсом. Соответственно — в каких либо корректировках сайта шаг влево, шаг вправо считается побегом 🙂 и без каких то базовых знаний фреймворка любые допилы никак не реализуемы.
ТЗ от владельца сайта — встроить на сайт онлайн калькулятор по доставке товара с Новосибирска на Дальний Восток (ссылка с уже готовым решением).
Кому интересно, подробное решение ТЗ: Читать полностью »

рубрики: Yii, Программирование | Комментарии (0)

13 Декабрь 2013

Yii — управление пользователями yii-user-management

Итак, для работы веб-приложения жизненно необходимая вещь — работа с пользователями, которую в свежеустановленном yii webapp я не обнаружил.
Да — авторизация есть, но на этом всё.
Нагуглил понятие «extensions» для фреймворка — как следует из названия — расширения.
Одно из них судя по названию мне подходит yii-user-management.
Судя по описанию — довольно неплохой инструмент:
Группы, роли, профиль, аватарки, сообщения, поддержка русского языка …
Итак, начнём — качаю последний предложенный архив yii-user-management_0.8.tar.bz2
обнаруживаю там кучку папочек — что же дальше? Доки в корне нема! Ищем дальше — вау, нашли \user\docs\install_tutorial.txt (нетривиально, правда ведь?)
первые 2 пункта относятся к установке самого yii webapp с MySQL
3. разворачиваем содержимое архива в /protected/modules/ (если нет — создать)
4. подключаем модуль — в массив ‘modules’=>array( нужно добавить

5. добавляем компонент user (старый закомментируем) — в массиве ‘components’=>array( …

Так же модуль user ставим в автозагрузку фреймворка

6. Подключаем стандартный компонент кэширования

7. Запускаем веб инсталлятор /index.php/user/install — вуаля
8. Логинимся admin/admin (тут выдавало ошибку т.к. пункт 6й по включению кэша я сначала пропустил)
Вот тут-то меня ожидало разочарование — под указанными учётными данными я залогиниться не смог!
Попробовал в форум на офсайте по данному расширению стукнуть — тишина …

После долгих ковыряний обнаружил, что проект с расширением присутствует на GitHub — решил поставить заново оттуда, и вуаля — 8й пункт заработал — меня пустили на сайт под админом!
Причём дебаг сообщение «You are running the Yii User Management Module 0.9-git-wip in Debug Mode!» гласило о том, что версия приложения 0.9 (а не 0.8 как на офсайте Yii).

Русский язык включается для всего Yii и влияет на модуль
Соответственно, добавляем параметр ‘language’ => ‘ru’ в корень возвращаемого массива main.php — кое-что видим по русски.

Картинка такая

Где группы, профиль, аватары ???
Попробовал «Generate Demo Data» — на что получил ошибку Property «YumUser.roles» is read only.

Завёл юзера user в ручную — и ура! получилось!

Ну что-же — какая никая админка юзеров получилась — на троечку 🙁
Роем дальше.

рубрики: Yii | Комментарии (1)

12 Декабрь 2013

Yii — фильтрация в CGridView

Итак, после недолгих изучений Yii было принято решение уже что нибудь начать.
А начать я решил с базы квартир для Риэлтеров.
Имхо, если проект довести до ума, сделать удобным в использовании — за применением не заржавеет.
Вообще, какая разница с чем оперировать — основные принципы в работе в разных отраслях одинаковы.

Вот так взять и начать сразу не вышло 🙂 — всё же нужны какие то реальные данные, с ними интереснее.
Соответственно, первое что было сделано — парсер объявлений о аренде квартир с arenda.ngs.ru (можно чтоб присылали готовый файл за деньги — но я жадный).
Парсеры я привык писать на чистом PHP — единственное отличие от ранее написанных парсеров — этот я ваял в PHPStorm (уже начинаю привыкать — довольно удобная штука).

Со структурой БД сильно заморачиваться не стал — одна табличка с объявлениями — и штук 9 справочных, а-ля ID, NAME (город, район, улица, и т.д.)
С КЛАДР-ом тоже заморачиваться не стал, хотя на всякий случай качнул MySQL выгрузку.

Итак — Yii!!!
Качаю фреймворк 1.1.14 (last stable) с оф.сайта.
Ставлю в режиме WebApp — вуаля, уже какой-никакой работающий каркас сразу есть с работающей авторизацией! (и это мне очень понравилось)
Далее, подключаю к фреймворку MySQL и генератор кода gii и создаю модели для всех созданных ранее в PHPMyAdmin табличек, для основной так же делаю в gii CRUD контроллер.

Табличка CGridView в админской части мне так же понравилась, но пока в ней не отображаются реляционные связи — айдишники выводятся в виде цифр.
Далее «вяжем» реляционные связи — в контролер arenda добавляем

для фотографий другая связь

Далее заходим во вьюшку с гридом и добавляем колонку в виде

так и отображение будет правильным и за одно появится фильтр с сортировкой по возрастанию!

С улицами мне такое решение не понравилось т.к. их очень много — решил сделать поиск по вхождению.
Тут мне помог andy_s с форума на оф.сайте — тема.

Инструкция:
1. во вьюшку добавляем колонку с именем search_street и отображаемыми релационными данными:

всё ок — поле для фильтрации добавилось, данные выводятся верно, но пока не фильтрует

2. Добавляем поле в модель

3. Добавляем в rules() правило с полем search_street в safe для search

4. В самом search() добавляем связанную таблицу и связь между search_street и именем

В итоге получилась довольно симпатичная и функциональная табличка

рубрики: Yii, Программирование | Комментарии (0)

Яндекс.Метрика