Ответы пользователя по тегу Yii
  • Как с помощью AR записать geometry поле?

    @MaxHero
    $adverts = new Adverts();
    $adverts->geom = new CDbExpression("ST_GeomFromText('POINT(57.230032 49.719473)',4326)");
    Ответ написан
    Комментировать
  • Как решить проблему с динамическими поддоменами?

    @MaxHero
    Пару лет назад на русскоязычном форуме yii задавался подобный вопрос. Решение подобной проблемы я описал в этом топике.

    Вкратце

    настройки виртуалхоста апача:
    <VirtualHost *:80>
        ServerAdmin maxhero90@gmail.com
        DocumentRoot "D:/Projects/WWW/urlShortener"
        ServerName urlshortener.localdomain
        ServerAlias *.urlshortener.localdomain
        ErrorLog "logs/urlShortener.localdomain-error.log"
        CustomLog "logs/urlShortener.localdomain-access.log" common
    
        <Directory />
            DirectoryIndex index.php
        </Directory>
    </VirtualHost>


    mod_rewrite:
    RewriteEngine on
    
    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # otherwise forward it to index.php
    RewriteRule . index.php


    a также правил CUrlManager:
    array(
        'http://<user:\w+>.example.com/<lang:\w+>/profile' => 'user/profile',
    )
    Ответ написан
  • Yii: как сменить класс модели с предка на наследника на лету?

    @MaxHero
    Ваша задача решается с помощью метода CActiveRecord::instantiate . В этом методе мы анализируем значения полей строки из БД (поле type) и возвращаем новый экземпляр требуемого объекта.
    Ответ написан
    Комментировать
  • Как правильно использовать AssetManager/ClientScript?

    @MaxHero
    В Yii есть компонент CClientScript, который отвечает за подключение файлов скриптов и css. У данного компонента есть свойство packages, с помощью которого мы можем сконфигурировать пакеты наших JavaScript/CSS файлов, указать для них зависимости, а потом во view подключать эти пакеты одним методом.

    Пример из конфига:

    'components' => array( 
        'clientScript' => array(
            'packages' => array(
                'item' => array(
                    'baseUrl' => 'js',
                    'js' => array('item.js'),
                    'depends' => array('jquery'),
                ),
                'filter' => array(
                    'baseUrl' => 'js',
                    'js' => array('filter.js'),
                    'depends' => array('jquery'),
                ),
            ),
        ),
    ),
    


    Тут мы определили 2 пакета (item и filter), каждый из которых состоит из 1го файла JavaScript. Оба пакета зависят от пакета, входящего в состав ядра Yii — jQuery. Таким образом, подключая данные пакеты во view, компонент CClientScript сперва подключит jQuery и только потом файлы из нашего пакета.

    Подключаем наши пакеты во view следующим способом:

    Yii::app()->clientScript->registerPackage('item');
    
    Ответ написан
    1 комментарий