<rmcreative>

RSS

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

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

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

    29 октября 2010

    И ещё одна приятность, попавшая в SVN. Теперь можно передавать параметрам действий массивы.

    class MyController extedns CController {
      // параметр объявлен как массив
      function actionArray(array $tests){
        foreach($tests as $test){
          echo $test;
        }
      }
     
      // параметр не объявлен как массив
      function actionScalar($test){
        echo $test;
      }
    }
    • Если в $_GET передан не массив, в $test будет только один элемент.
    • Если параметр не объявлен как массив, а передан массив, получим HTTP ошибку 400 (Bad request).

    Напомню, что передать PHP массив через адресную строку можно так:

    /my/array/?tests[]=0&tests[]=2&tests[]=4&tests[]=1
    
    8 комментариев
  2. Улучшения в консольных командах Yii

    29 октября 2010

    Пару часов назад Qiang залил в SVN Yii улучшения для консольных команд.

    Теперь можно так:

    yiic CommandName ActionName --Option1=Value1 --Option2=Value2 ...
    

    При этом опции передадутся именованными параметрами сответствующим методам-действиям команды.

    Например для вот такой команды:

    class SitemapCommand extends CConsoleCommand {
      public function actionIndex($type, $limit=5) { ... }
      public function actionInit() { ... }
      public function actionProcess(array $type) { ... }
      public function actionSelfdestruct($confirm=false) { ... }
    }

    можно передать параметры так:

    yiic sitemap index --limit=5 --type=News
    yiic sitemap index --type=News
    yiic sitemap --type=News
    yiic sitemap process --type=News --type=Post
    yiic sitemap selfdestruct --confirm
    
    • Порядок параметров не важен.
    • Параметры с значениями по умолчанию можно не указывать.
    • Если указать параметр без значения, получим на входе true.
    • Если не указать действие, то будет вызвано действие index.
    • Если указать параметр более одного раза и действие принимает параметры типа array, получим в параметре массив.

    Все улучшения обратно совместимы, так что существующие команды будут работать как раньше.

    3 комментария
  3. WebConf Riga 2010

    6 октября 2010

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

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

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

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

    6 комментариев
  4. 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 комментария
  5. Yii web shell

    25 сентября 2010

    Yii web shell

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

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

    7 комментариев
  6. 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 комментариев
  7. 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 комментариев
  8. РИФ 2010, доклад про фреймворки

    1 сентября 2010

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

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

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

    6 комментариев
  9. 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 комментариев
  10. Наследование с одной таблицей в Yii

    18 августа 2010

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

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

    Читаем

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