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

Помощь в создании роута
http://forum.kohanaframework.su/viewtopic.php?f=31&t=489
Страница 1 из 1

Автор:  Gilamov Danis [ 07 дек 2012, 20:57 ]
Заголовок сообщения:  Помощь в создании роута

Решил воспользоваться возможностью HMVC для более четкого деления сайта на блоки.

Продумал примерно такую структуру
В файлах вида где нужно к примеру я вывожу меню
Код:
echo Request::factory('/blocks/menu/topmenu')->execute(); 


Где к примеру нужен сайдбар
Код:
echo Request::factory('/blocks/sidebar/rightsidebar')->execute(); 


Для вывод другой информации например списка новостей тоже самое
Код:
echo Request::factory('/blocks/widget/news')->execute(); 


Контроллеры располагаются в Controller/Blocks/<тип_блока>/<имя_контроллера>

Роут имеет соответствующий вид Blocks/<тип_блока>/<имя_контроллера>

Код:
Пример контроллера
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Blocks_Menu_Topmenu extends Controller {

   public function action_index()
   {   
        $content=View::factory('/blocks/menu/topmenu');
      $this->response->body($content);
   }

} // End Menu (HMVC)


Как создать универсальный роут для всех их ,и чтобы была проверка на то что запрос выполнялся только внутренный т.е пользователь не может напрямую ввести в адрес данные это роута

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

Автор:  Zorato [ 08 дек 2012, 01:09 ]
Заголовок сообщения:  Re: Помощь в создании роута

Я бы посоветовал заменить
Blocks/<тип_блока>/<имя_контроллера>
на
Blocks/<имя_контроллера>/<действие>, где типом блока было бы название контроллера, а действием уже сам блок.
Преимущество - не надо на каждый маленький блок заводить кучу контроллеров с одним index_action в каждом.

Далее.
Пусть все контроллеры называются
Код:
class Controller_Blocks_Menu extends Controller_Block

внутри у них могут быть акшены:
Код:
public function action_topmenu()
public function action_sidemenu()
public function action_languagemenu()


Все эти контроллеры следует положить в папку applications/classes/controllers/Blocks (если у вас кохана версии 3.2 и старше, то в папку blocks).

В папке applications/classes/controllers следует создать примерно следующий контроллер:
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Blocks extends Controller {

   public function before()
   {
     if ($this->request->is_initial())
     {
        //это не HMVC запрос
        throw new HTTP_Exception_403;
        // или что-то другое на ваше усмотрение.
     }
   }
}


Что касается роутов, то добавьте примерно следующее:
Код:
Route::set('blocks', 'blocks/<controller>/<action>')
   ->defaults(array(
      'directory' => 'blocks',
   ));

Автор:  Gilamov Danis [ 08 дек 2012, 12:11 ]
Заголовок сообщения:  Re: Помощь в создании роута

Большое спасибо поступил проще ) ,но в том же ключе что и ваш вариант

Автор:  AmberLEX [ 08 дек 2012, 23:00 ]
Заголовок сообщения:  Re: Помощь в создании роута

Напишите как сделали, это будет и другим интересно.
Сколько тратится времени на запросы, если использовать hmvc?
Т.е. если на странице отображется 3-n блоков че там профайлер показывает?)

Автор:  Gilamov Danis [ 09 дек 2012, 20:09 ]
Заголовок сообщения:  Re: Помощь в создании роута

Подсказали ) http://hashcode.ru/questions/171585/php-создание-роута-kohana-3-3
Вот здесь решение ,начал его использовать.
На профайлере пока не смотрел но не думаю что это будет сильно нагружать

Автор:  AmberLEX [ 09 дек 2012, 21:00 ]
Заголовок сообщения:  Re: Помощь в создании роута

Это решение я видел уже здесь) http://nnm-club.ru/forum/viewtopic.php?t=411347

Автор:  Gilamov Danis [ 09 дек 2012, 22:55 ]
Заголовок сообщения:  Re: Помощь в создании роута

Бывает ). Главное работает и я понимаю как )

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