2013-08-20 2 views
1

Каков наилучший способ создания страницы в FuelPHP, чтобы каждый из блоков страницы был построен самостоятельно как модули, а затем выходной HTML-код был составлен в макете.FuelPHP - Создание страницы в блоках

Лучшее, что я нашел до сих пор, это HMVC с чем-то вроде ниже.

$block1= Request::forge('mycontroller/block1')->execute(); 
$block2= Request::forge('mycontroller/block2')->execute(); 

$data['block1'] =$block1; 
$data['block2'] = $block2; 

//assign the view to browser output 
return View::forge('home/index', $data); 

Однако загрузка всей структуры для вызовов кажется довольно неэффективной (и, возможно, медленной в результате). Есть лучший способ сделать это?

ответ

2

Если вы используете модули (вместо вызова другого действия в том же контроллере, как вы, кажется, здесь), запросы - это абсолютно путь. А поскольку запросы используют таблицу маршрутизации, вы можете контролировать, какой контроллер/действие вызывается, манипулируя вашими маршрутами.

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

Для полноты, способ выполнения запроса HMVC:

try 
{ 
    $result = \Request::forge('your/uri/here')->execute()->response()->body; 
} 
catch (\HttpNotFoundException $e) 
{ 
    // the requested URI could not be found 
} 
0

Вместо этого использовать Request::forge('mycontroller/block1')->execute(); вы можете использовать View::forge('mycontroller/block1').

Представление должно быть обработано блоками, а не запросом. Другим преимуществом является pas vars, чтобы блокировать .... я не тестировал полностью, но кажется более быстрым для рендеринга.

+0

Проблема с что ваша обработка еще в одном методе контроллера, который «блок-» должен быть самодостаточным фрагмент кода, который для вызывающего является черный ящик: возвращается только некоторый HTML (или объект View). – WanWizard