Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Уроки по созданию своей CMS
http://forum.kohanaframework.su/viewtopic.php?f=38&t=657
Страница 4 из 6

Автор:  WinterSilence [ 18 авг 2013, 13:58 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

AmberLEX писал(а):
Я скачал lesson_1 по ссылке с этого форума, я тот реп не трогал

пример "отстает" от уроков, обновлю сегодня архив

Автор:  WinterSilence [ 18 авг 2013, 13:58 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Урок 3. Базовый набор роутов

Рассмотренный в уроке 2 набор контроллеров требует создания дополнительных роутов(route), поэтому создадим загрузчик init.php в модуле common и разместим в нем основные роуты нашей CMS.

Код:
if ( ! Route::cache())
{
   // AJAX запросы, data_type - определяет какой тип данных должен вернуть контроллер
   Route::set('ajax', 'ajax/<controller>(/<action>(/<data_type>))', array(
         'data_type'  => '(html|json|xml)',
      ))
      ->defaults(array(
         'directory'  => 'Ajax',
         'controller' => '',
         'action'     => 'index',
         'data_type'  => 'json',
      ));
   // Для виджеты
   Route::set('widget', 'widget/<controller>')
      ->defaults(array(
         'directory'  => 'Widget',
         'controller' => '',
         'action'     => 'index',
      ));
   // Страницы - список
   Route::set('list', '<controller>/list(/<page>(-<total>(/<per_page>((/<order>(/<direction>))))))', array(
         'page'       => '[0-9]+',
         'total'      => '[0-9]+',
         'per_page'   => '[0-9]+',
         'order'      => '[\w\-]+',
         'direction'  => '(asc|desc)',
      ))
      ->defaults(array(
         'directory'  => 'Page',
         'controller' => '',
         'action'     => 'list',
         'page'       => '1',
         'total'      => '1',
         'per_page'   => '10',
         'order'      => 'id',
         'direction'  => 'asc',
      ));
   // Страницы - остальные действия, slug - ЧПУ ИД
   Route::set('item', '<controller>/(/<action>(/<slug>))', array(
         'slug' => '[\w\-/]+',
      ))
      ->defaults(array(
         'directory'  => 'Page',
         'controller' => 'Home',
         'action'     => 'index',
      ));
}

Важно помнить, что базовые роуты должны добавляться последними, а значит модули, содержащие роуты, должны подключаться до commmon. Подключение модулей происходить в bootstrap приложения(`APPPATH.bootstrap`), следовательно роуты самого приложения должны подключаться до подключения модулей.

Примерный код bootstrap приложений:
Код:

if ( ! Route::cache())
{
   // Здесь подключаются роуты приложения
}

Kohana::modules(array(
   'captcha' => MODPATH.'captcha', // Имеет роут, поэтому подключен до common
   'common'  => MODPATH.'common',  // Содержит базовые роуты
   'cache'   => MODPATH.'cache',   // Не содержит роутов
   // ...
));

if ( ! Route::cache())
{
   // Кешируем роуты
   Route::cache(Kohana::$caching);
}

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

Пример роута для страниц аутентификации и регистрации:
Код:
Route::set('auth', '<action>', array(
      'action'  => '(login|register|remind_password|register_confirm)',
   ))
   ->defaults(array(
      'directory'  => 'Page',
      'controller' => 'User',
      'action'     => 'login',
   ));

Я не стал добавлять подобные роуты в список базовых т.к. они не являются необходимыми и при желании могут быть добавлены, например, только в frontend приложении.

Автор:  WinterSilence [ 28 авг 2013, 09:56 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Актуальная версия проекта доступна теперь по адресу https://github.com/WinterSilence/kohana-cms

Автор:  AmberLEX [ 28 авг 2013, 11:09 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Может common вынести на уровень к frontend и backend? Как-то логичнее будет (как здесь например https://github.com/yiisoft/yii2/blob/ma ... -structure)
И не нужно лазить в папку modules постоянно

Автор:  WinterSilence [ 28 авг 2013, 12:45 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Да, думаю стоит так сделать.

Автор:  AmberLEX [ 30 авг 2013, 14:50 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Может в readme.md добавить как установить, типа:
git clone https://github.com/WinterSilence/kohana-cms.git
cd kohana-cms
git submodule update --init --recursive

только system у меня почему-то не поставилась: Unable to checkout 'bf86c24bdh6h......' in submodule path 'system'

Автор:  WinterSilence [ 30 авг 2013, 14:59 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

AmberLEX > да с гитом у меня беда =\ до конца никак не освою, я на 3.3 накатил 3.3.1 но сохраняться на гите что-то он никак не хочет. пока вообще рано пока это дело продвигать т.к. я пока даже минимум не сделал.

Автор:  AmberLEX [ 30 авг 2013, 15:03 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

эх... у меня тоже)
в общем все поставилось по вышенаписаному, кроме system

Автор:  mstdmstd [ 01 сен 2013, 16:04 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Может я упустил, но я не нашел как разными приложениями использовать одни и те же модели.
Имею:
Каталог /public в котором лежат index.php( в нем $application = '../frontend'; ) и admin.php ( $application = '../backend'; ).
Сейчас модели лежат в /backend. Вынести каталог с моделями в корень ? но я не нашел а какая константа/переменная указывает на каталог с модели чтобы ее можно было переоперелить?

Аналогично у меня есть пару классов(просто набор функций), которые лежат в backend/classes. Как сделать чтобы frontend имел к ним доступ ?

Там же в backend/classes есть мои переопределенные Pagination.php и View.php. Как сделать чтобы frontend имел и к ним доступ ?

Автор:  WinterSilence [ 01 сен 2013, 21:15 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

mstdmstd> основные части в модуле common, остальные части также выполняются в виде модулей, ну и соответствующие контроллеры\модели (расширения базовой под нужды конкретного приложения) для приложений размещаются в них, либо в модуле, что позволит проще переносить их между площадками\проектами.

Страница 4 из 6 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/