Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 19 мар 2024, 14:23

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 18 авг 2013, 13:58 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
AmberLEX писал(а):
Я скачал lesson_1 по ссылке с этого форума, я тот реп не трогал

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

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 18 авг 2013, 13:58 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Урок 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 приложении.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 28 авг 2013, 09:56 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Актуальная версия проекта доступна теперь по адресу https://github.com/WinterSilence/kohana-cms

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 28 авг 2013, 11:09 
Не в сети
Бывалый
Аватара пользователя

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

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 28 авг 2013, 12:45 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Да, думаю стоит так сделать.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 30 авг 2013, 14:50 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Может в 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'

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 30 авг 2013, 14:59 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
AmberLEX > да с гитом у меня беда =\ до конца никак не освою, я на 3.3 накатил 3.3.1 но сохраняться на гите что-то он никак не хочет. пока вообще рано пока это дело продвигать т.к. я пока даже минимум не сделал.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 30 авг 2013, 15:03 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
эх... у меня тоже)
в общем все поставилось по вышенаписаному, кроме system

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 01 сен 2013, 16:04 
Не в сети
Бывалый

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Уроки по созданию своей CMS
СообщениеДобавлено: 01 сен 2013, 21:15 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
mstdmstd> основные части в модуле common, остальные части также выполняются в виде модулей, ну и соответствующие контроллеры\модели (расширения базовой под нужды конкретного приложения) для приложений размещаются в них, либо в модуле, что позволит проще переносить их между площадками\проектами.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group