.
Место для Вашей рекламы
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( нужно добавить

'user' => array(
			'debug' => true,		
		),

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

		 'user'=>array(
		      'class' => 'application.modules.user.components.YumWebUser',
		      'allowAutoLogin'=>true,
		      'loginUrl' => array('//user/user/login'),
		    ),

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

 'import'=>array(  
  'application.modules.user.models.*',
	[...]

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

		'cache' => array('class' => 'system.caching.CDummyCache'),

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 добавляем

'city'=>array(self::BELONGS_TO, 'City', 'id_city') и т.д.

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

'fotos'=>array(self::HAS_MANY, 'Fotos', 'id_arenda')

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

        array(
            'name' => 'id_city',
            'filter' => CHtml::listData(city::model()->findAll(array('order'=>'name')), 'id', 'name'),
            'value'=>'$data->city->name'
        ),

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

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

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

array(
  'name' => 'search_street',
  'value'=>'$data->street->name'
),

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

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

class Arenda extends CActiveRecord {

public $search_street;

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

array('search_street, id, title, .....', 'safe', 'on'=>'search'),

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

$criteria->with = array('street');
$criteria->compare('street.name',$this->search_street, true);

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

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

9 Декабрь 2013

Взломали Твиттер

Ломанули таки сволочи мой твиттер 🙁
Почистить гадость помог сервис
http://delete.twitlan.com в связке с Web Deweloper — «check all checkbox» для отметки сразу сотни записей
т.к. насрать успели порядочно (порядка 900 левых твитов)

Спамили ссылками на чистые доры
например shopladyme.com или www.dinosrestaurantastoriany.com
Что ещё использовали кроме хакнутых твиттеров — не анализировал, как хакнули — тоже не знаю.
Куда льют такой говно-трафик тоже не стал изучать.

Такое впечатление, что доры генерировали тупо по Яндекс Эфиру т.к. ключевики вообще бредовые.
Домены взяты просроченные (дата регистрации — начало декабря) с историей — shopladyme.com с 2007 года в веб-архиве.

Что поразило — это 6 тыс. страниц в индексе Яши!
http://yandex.ru/yandsearch?serverurl=dinosrestaurantastoriany.com&lr=194
Понимаю, что это скорее всего до следующего АПА но всё таки!
(кстати, нужно этот момент будет проконтролировать)

рубрики: SEO | 2 комментария

5 Декабрь 2013

PHPStorm IDE и Yii фреймворк

Ну что могу сказать — после довольно затяжного периода различных доработок под Битрикс потянуло меня снова на «нормальное» программирование…

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

Прошлый раз, года наверное 3 назад я пробовал силы с CodeIgniter PHP Framework на PHPEd IDE.
На сей раз немного погуглив отзывы решил творить на Yii PHP фреймворке, в качестве IDE взляд остановился на PHPStorm.
Сегодняшнее первое знакомство с фреймворком оставило сугубо приятные впечатления — для наглядности в ознакомлении пошел в ютуб (люблю «живые» примеры) и просмотрел первые 4 урока Богдана Березанского с параллельной реализацией на хостинге — примеры очень простенькие и понятные — рекомендую. /

Что сильно сразу понравилось в отличие от CodeIgniter — это наличие готового шаблонного рабочего приложения с готовой авторизацией и наличием минимальной связки MVC (model view controller) для работающего приложения — всё наглядно можно изучить и «потрогать» и генератора кода — вообще «бомба»! — думаю фишка сильно упрощает разработку приложения, что и проверю в реальной разработке.

На счёт PHPStorm-a пока сказать ничего не могу — внешне обычная IDE, с особенностями ознакомлюсь в процессе — но сильно хвалят… (пока думал найти как он проект по ftp синхронизирует — но с лёту не нашел этих настроек). Будет время — ещё утуб помучаю на предмет работы в PHPStorm, да хоткеи нужно глянуть.

Ну что-ж … удачи мне, и сил не бросить и довести проект до логического финала.
Интересное из процесса с моими комментариями конечно же буду постить в блог.

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

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