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

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 05 июл 2025, 13:48

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Помощь в создании роута
СообщениеДобавлено: 07 дек 2012, 20:57 
Не в сети
Новичок

Зарегистрирован: 30 апр 2012, 13:42
Сообщения: 24
Решил воспользоваться возможностью 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)


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

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

_________________
http://gilamov.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помощь в создании роута
СообщениеДобавлено: 08 дек 2012, 01:09 
Не в сети
Бывалый

Зарегистрирован: 29 сен 2012, 00:30
Сообщения: 65
Откуда: Рига, Латвия
Я бы посоветовал заменить
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',
   ));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помощь в создании роута
СообщениеДобавлено: 08 дек 2012, 12:11 
Не в сети
Новичок

Зарегистрирован: 30 апр 2012, 13:42
Сообщения: 24
Большое спасибо поступил проще ) ,но в том же ключе что и ваш вариант

_________________
http://gilamov.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помощь в создании роута
СообщениеДобавлено: 08 дек 2012, 23:00 
Не в сети
Бывалый
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помощь в создании роута
СообщениеДобавлено: 09 дек 2012, 20:09 
Не в сети
Новичок

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

_________________
http://gilamov.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помощь в создании роута
СообщениеДобавлено: 09 дек 2012, 21:00 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Это решение я видел уже здесь) http://nnm-club.ru/forum/viewtopic.php?t=411347

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помощь в создании роута
СообщениеДобавлено: 09 дек 2012, 22:55 
Не в сети
Новичок

Зарегистрирован: 30 апр 2012, 13:42
Сообщения: 24
Бывает ). Главное работает и я понимаю как )

_________________
http://gilamov.ru


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

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


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

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


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

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