Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.08.2012 13:43:01

Создание независимых блоков в шаблоне

Читал туториалы про использование @section и @yield. Но так и не понял как можно сделать довольно стандартную вещь. Предположим у нас есть новостной сайт. Как заместить блок content мне понятно, он будет меняться в зависимости от контроллера и его layout.

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

Или еще хуже - прямо в шаблоне вызывать методы получения последних новостей/авторов и отрисовывать их.

Есть ли какое-либо стандартное решение?

Не в сети

#2 23.08.2012 14:56:44

Re: Создание независимых блоков в шаблоне

Что понимается под независимостью блоков? Можно использовать разные методы, например, для определённых шаблонов устанавливать составителей, которые будут добавлять к нему нужные переменные. Можно написать какой-то общий метод, получающий блок (новости и т.п.), а в шаблоне передавать переменную как PHP$view->$blockType getBlock($blockType).

Не в сети

#3 24.08.2012 08:16:47

Re: Создание независимых блоков в шаблоне

Это контроллер:

class Home_Controller extends Base_Controller {

	public $restful = true;
	
	public function get_index()
	{
		return View::make('home.mainpage');
	}
}

Сделал composer и поместил его в routes.php

View::composer('home.mainpage', function($view) {
	
	$view->nest('ooo', 'home.test');
});

В шаблоне home.mainpage написал

...
{{ $ooo }}
...

В шаблоне home.test собственно то, что надо подставлять.

Это работает. Но возникает вопрос. Мне вот надо в этом блоке вывести последние N записей из таблицы. По терминологии Joomla это называется "модуль". Куда по-православному лучше положить логику выборки записей? В Joomla это был отдельный файл и все такое. Неужели это надо запихивать в routes.php? Можно ли сподобить на это дело отдельный контроллер и вызвать его из routes.php?

Не в сети

#4 24.08.2012 16:05:38

Re: Создание независимых блоков в шаблоне

  1. Можно ли сподобить на это дело отдельный контроллер и вызвать его из routes.php?

Так а что вам мешает указать функцию обратного вызова, а не замыкание?

PHP
View::composer('home.mainpage', array('Home_Controller''add_variables'));

И пусть add_variables() добавляет любые переменные. Единственное отличие от такого же кода в routes.php — то, что он находится в отдельном классе контроллера.

Либо если вам нужно не просто переменную добавить, а именно вызывать функцию и делать это нужно в отдельных шаблонах по разному — возможно тут лучше будет сделать «настоящую» функцию, которая будет вызываться из кода шаблона.

Не в сети

Подвал раздела