<rmcreative>

RSS

Все заметки с тегом «Yii»

Можно уточнить:

  1. WebConf Riga 2010

    6 октября 2010

    Открыта регистрация на WebConf Riga 2010, которая состоится в Риге 6 и 7 ноября. Регистрация продлится до 31 октября, но если вы не из Латвии или стран ЕС и хотите приехать, самое время получать визу.

    Список докладчиков и докладов уже опубликован на сайте конференции и лично меня он очень радует. По счастливому совпадению, ни одного доклада, который был бы мне не совсем интересен.

    Дополнительно будут проведены мастер-классы Percona DBA Day и InnoDB/XtraDB Day.

    Мой доклад будет называться «PHP фреймворк Yii: основы, техники и немного инсайда». Его план примерно такой:

    6 комментариев
  2. Yii Iconized Menu 1.1

    29 сентября 2010

    Приделал к Yii Iconized Menu поддержку спрайтов, которые отдаёт Яндекс, и сделал этот метод умолчательным.

    В действии, опять же, можно посмотреть справа в секциях «Интересное» и «Друзья» →

    Использовать так:

    <?$this->widget('ext.yiiext.widgets.iconizedMenu.EIconizedMenu',array(
        'items'=>array(
            array('label'=>'Yii Framework', 'url'=> 'http://yiiframework.com/'),
            array('label'=>'RMCreative', 'url'=> 'http://rmcreative.ru/'),
            array('label'=>'Twitter', 'url'=> 'http://twitter.com/'),
        ),
    ))?>
    3 комментария
  3. Yii web shell

    25 сентября 2010

    Yii web shell

    Веб-консоль для Yii. Позволяет запускать консольные команды из браузера. Полезна на серверах без SSH и в админках консольного стиля.

    Для работы используется та же конфигурация, что и у основного приложения, то есть если работает приложение, будет работать и консоль.

    7 комментариев
  4. Yii Iconized Menu

    22 сентября 2010

    Решил поделиться довольно удобным виджетом для Yii, позволяющим выводить меню с значками слева. В данный момент при помощи него реализованы секции «Интересное» и «Друзья» справа →

    Пользоваться им очень просто:

    <?$this->widget('ext.yiiext.widgets.iconizedMenu.EIconizedMenu',array(
        // Раскомментируйте для использования Яндекс вместо Google
        //'iconizerBaseUrl' => 'http://favicon.yandex.ru/favicon/',
        'items'=>array(
            array('label'=>'Yii Framework', 'url'=> 'http://yiiframework.com/'),
            array('label'=>'RMCreative', 'url'=> 'http://rmcreative.ru/'),
            array('label'=>'Twitter', 'url'=> 'http://twitter.com/'),
        ),
    ))?>

    Реализация на самом деле очень проста и сводится к использованию соответствующих сервисов Google или Яндекс, который, кстати, умеет собирать значки в спрайт. Также можно использовать и другие сервисы.

    11 комментариев
  5. Yii 1.1.4

    5 сентября 2010

    Вышла стабильная версия Yii 1.1.4, включающая более 60 исправлений и улучшений.

    • JQuery UI обновлён до версии 1.8.4 и перемещён к остальным пакетам ядра. Теперь его можно подключать при помощи CClientScript::registerCoreScript.
    • При отсутствии директории assets или прав на неё теперь показывается ошибка.
    • В коде, получаемом при использовании CHtml, live() заменён на delegate().
    • Добавлены классы CSqlDataProvider и CArrayDataProvider. Примеры использования можно посмотреть в API.
    • Автоматическая привязка параметров действий контроллера к $_GET.
    • CUrlManager::addRules(), позволяющий добавлять правила роутинга на лету.
    • Yii::import() теперь выкидывает исключение при отсутствии файла.
    • CActiveRecord::count() теперь учитывает GROUP BY и HAVING.
    • CDbCriteria теперь можно использовать при запросе как параметр для отношений.
    • Улучшена опция together для отношений HAS_MANY и MANY_MANY, предназначенная для формирования одного SQL-запроса с JOIN.
    • Теперь можно получить и изменить критерий в beforeFind() AR-модели.
    • Улучшен код, генерируемый Gii. Добавлен PHPDoc для отношений, изменён код отображений.
    • Зависимости для CChainedCacheDependency можно передавать массивом в конструкторе.
    • CModel::onUnsafeAttribute теперь вызывается только при вызове CModel::setAttributes с параметром $safeOnly==true.

    Это лишь часть изменений. Остальные описаны в полном списке изменений на английском.

    Также, к нам присоединились два разработчика: Y!! и mdomba.

    12 комментариев
  6. РИФ 2010, доклад про фреймворки

    1 сентября 2010

    15 сентября на Воронежском РИФ расскажу про фреймворки. Доклад называется «PHP-фреймворк Yii. Выбираем PHP-фреймворк. Особенности разработки с фреймворками». Часть про Yii будет совсем небольшая.

    Регистрация заканчивается 14 сентября, так что если хотите посетить данное мероприятие — с регистрацией затягивать не стоит.

    UPD: тема изменилась на «Выбираем PHP-фреймворк. Особенности разработки с фреймворками».

    6 комментариев
  7. Yii: параметры для действия контроллера

    30 августа 2010

    В стремительно приближающемся релизе Yii 1.1.4 будет довольно приятная возможность. Теперь можно будет использовать $_GET-параметры как параметры действия контроллера.

    Теперь вместо:

    class PostController extends CController
    {
        public function actionCreate()
        {
            if(isset($_GET['category']))
                $category=(int)$_GET['category'];
            else
                throw new CHttpException(404,'invalid request');
     
     
            if(isset($_GET['language']))
                $language=$_GET['language'];
            else
                $language='en';
     
     
            // ... действительно полезная часть кода ...
        }
    }

    можно будет так:

    class PostController extends CController
    {
        /**
         * Создание поста.
         * @param integer $category ID категории нового поста
         * @param string $language язык нового поста
         */
        public function actionCreate($category, $language='en')
        {
            // ... действительно полезная часть кода ...
        }
    }

    При этом, если в $_GET не оказалось указанного параметра и для параметра нет значения по умолчанию, будет выброшено исключение CHttpException.

    Если в PhpDoc метода присутствуют типы параметров (поддерживаются integer(int),boolean(bool),float(double) иstring`), происходит автоматическое приведение типа из $_GET к указанному.

    UPD: после пары дней внутренних и внешних обсуждений было решено выкинуть приведение типов.

    28 комментариев
  8. Наследование с одной таблицей в Yii

    18 августа 2010

    Реляционные БД не поддерживают наследование, поэтому при отображении объекта на БД приходится как-то это обходить. При этом необходимо минимизировать количество JOIN. Решается данная проблема довольно простым способом при помощи паттерна наследование с одной таблицей. При этом, в таблице хранятся столбцы для всей ветки классов, наследуемых от заданного. Для определения типа модели обычно используется поле type.

    В Yii этот паттерн реализуется достаточно красиво.

    Читаем

    13 комментариев
  9. CUrlManager::addRules

    5 августа 2010

    Довольно часто на форумах спрашивали, как добавить свои правила роутинга не из конфига, а, например, из БД или XML, лежащего в модуле.

    Теперь это можно сделать при помощи CUrlManager::addRules. Вызывать его необходимо до CWebApplication::processRequest. Всё, что будет добавлено позже будет проигнорировано.

    Одним из способов это сделать является использование событий. В данном случае CWebApplication::onBeginRequest.

    Например, для подгрузки правил из модулей в main.php пишем:

    'onBeginRequest'=>function($event){
      $route=Yii::app()->getRequest()->getPathInfo();
      $module=substr($route,0,strpos($route,'/'));
     
      if(Yii::app()->hasModule($module))
      {
        $module=Yii::app()->getModule($module);
        if(isset($module->urlRules))
        {
          $urlManager=Yii::app()->getUrlManager();
          $urlManager->addRules($module->urlRules);
        }
      }
      return true;
    },

    Код уже ушёл в SVN.

    25 комментариев
  10. Yii, судьба yiic shell

    29 июля 2010

    В Yii 1.1.2 было решено, что yiic shell, используемый для генерации кода из консоли, должен быть постепенно вытеснен GUI-генератором Gii. Решение было мотивировано тем, что поддерживать два генератора будет слишком накладно.

    С выходом 1.1.3 сообщество обратило на это внимание.

    Стоит сразу пояснить, что yiic сам по себе как поддержка консольных команд ни в коем случае не перестанет поддерживаться. yiic shell — только та часть, которая отвечает непосредственно за генерацию кода.

    По идее существует компромиссный вариант — использовать и для Gii и для yiic shell одни и те же шаблоны, что позволит свести затраты на их поддержку к минимуму. Проблема с ним в том, что в Gii в шаблон передаётся гораздо большее количество параметров.

    18 комментариев