AngryGantz

Заметки о Web-стройках

JCFYii 2. Выбор структуры и первичная настройка

| Comments

Не тот случай, что-бы изобретать велосипеды. За базу взято стандартное приложение yii, генерируемое из консоли командой % YiiRoot/framework/yiic webapp WebRoot/testdrive. Думаю это снимет часть проблем новичка. Хотя конечно правильнее на мой взгляд делить фронт и бэк. А тут по структуре всё вроде как в куче получается. Модули фронт и бэк можно использовать как вариант, но предполагается использование кучи сторонних разработок и модули юзеров, прав и т.д. - общие и при модулях фронт-бэк будет больше путаницы, чем пользы

Попробую разделить на уровне контроллеров и вьюшек, тупо создав подпапки front и Back, в которых будут (предположительно) этакие “надконтроллеры” общего назначения, а сторонние модули надо постараться не трогать вообще, за исключением может быть вьюшек. Попытка не пытка -). Каталог собственного производства так же загоню в отдельный модуль. Причём очень хочется разделить собственно каталог от системы заказов и корзины. Пока слабо понимаю, как это сделать. Вьюшки по любому пересекутся требуя и того и другого и третьего.

Вобщем желаний много, а как это всё сделать пока не очень понятно. Ну главное начать копать от КПП и к обеду что-нибудь прояснится.

Первичная настройка

Куда деть фрэймворк?

Сам фрэймворк у меня оказался за бортом www директории. Как-то мне это не нравится. Кому как, а мне не по фен-шую. Перенес фрэймворк в www/protected/lib/yii В файле www/index.php поменял путь к нему: $yii=dirname(__FILE__).'/protected/lib/yii/yii.php'; По мне так красивее, чем миллион ../../../ и т.д. Опять же, если это всё перерастет из ознакомления для души в работу, лучше сразу готовить нормальные сани, а на некоторых хостингах с папкой “за рутом” могут всякие проблемы возникнуть.

Подключение к БД.

Создал БД jcat. В файле protected/config/main.php раскомментил блок подключения к MySQL и настроил на базу, а подключение к лайт вырубил:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    // ......  
    /*
    'db'=>array(
        'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
    ),
    */
    // uncomment the following to use a MySQL database
    'db'=>array(
        'connectionString' => 'mysql:host=localhost;dbname=jcat',
  'emulatePrepare' => true,
  'username' => 'root',
  'password' => '',
  'charset' => 'utf8',
    ),
?>

Включение GII

Фишка yii - автоматическое создание кода CRUD - моделей, контроллеров, вьюшек на базе таблицы БД - штука приятная и полезная. В принципе в бэке можно и стандартными вьюшками обойтись, а во фронте как база. Вобщем оно мне надо. Включил раскомментировав в config/main.php соответствующую секцию и прописал в айпи фильтр адрес, на котором сайт на локале крутится и пароль.

1
2
3
4
5
6
7
8
<?php
   'gii'=>array(
      'class'=>'system.gii.GiiModule',
      'password'=>'12345',
        // If removed, Gii defaults to localhost only. Edit carefully to taste.
      'ipFilters'=>array('127.0.0.10','::1'),
    ),
?>

Включение ЧПУ

Ну а куда без них? Пока тоже всё просто - надо только снять комментарии с секции URLManager в том же главном файле конфигурации:

1
2
3
4
5
6
7
8
9
10
11
<?php
   // uncomment the following to enable URLs in path-format
    'urlManager'=>array(
      'urlFormat'=>'path',
      'rules'=>array(
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
          '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
          '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),
    ),
?>

Ага. Просто. Как говорится, “ну вот, началось”. index.php из адреса никуда не делся. Некрасяво. Надо бы разобраться. Придётся шаманить с urlManager и .htaccess. Впрочем можно и не шаманить самому, всё уже придумано до нас. минута на гугле и есть решение. Писать дольше чем делать, но обещал себе родимому. Итак, всё просто. в корне создаём “.htaccess”. Туда рисуем:

1
2
3
4
5
6
7
8
<?php
    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
?>

а в конфиге добавляем параметр для urlManager: 'showScriptName' => false,, то есть секция теперь выглядит так:

1
2
3
4
5
6
7
8
9
10
11
<?php
    'urlManager'=>array(
      'urlFormat'=>'path',
        'showScriptName' => false,
        'rules'=>array(
       '<controller:\w+>/<id:\d+>'=>'<controller>/view',
       '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
       '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),
    ),
?>

Правда если переходить в меню сгенерированного приложения по ссылке “About”, в адреной строке появляется http://locyii/site/page?view=about, но это уже проблема менюшки, так как http://locyii/site/page/view/about вполне себе работает. А с меню потом. Может и меню то другое будет.

Ну вот, начальную настройку считаю завершенной. На всё про всё ушло минут 20, это вместе с просматриванием доков на yiiframework.ru. Писал эту простыню гораздо дольше :-)

Comments