В предыдущей заметке мы рассмотрели установку frameworkKohanaphp. А так же познакомились с тем, что из себя представляют контроллер, вид и модель в Kohana. Узнали как передавать параметры в методы контроллеров через строку браузера. И как передавать переменные в файл вида.
Если вы не читали ту заметку, то обязательно прочтите и проделайте все шаги. Без них вам сложно будет понять о чем идет речь в данной заметке. А в ней я начну рассказывать как Kohana помогает вам решать повседневные задачи.
При создании живого проекта на этом фреймворке одной из первых встает проблема создания шаблона. Ведь не удобно в каждом view-файле указывать то, что можно вынести в footer и header. В этой статье мы рассмотрим такую возможность Kohana как шаблоны (templates).
Для того, чтобы понять как это работает, давайте обратимся к контроллеру welcome.php, который был упомянут в прошлой заметке. Откройте у себя этот файл.

Я приведу урезанный вариант кода этого контроллера

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Welcome_Controller extends Template_Controller {
 
	// Устанавливаем имя шаблона, который будем использовать
	public $template = 'kohana/template';
 
	public function index() {
		// Подключаем view-файл с контентом
		$this->template->content = new View('welcome_content');
 
		// Передаем перемнные как и в обычный view
		$this->template->title = 'Welcome to Kohana!';
		$this->template->content->links = array
		(
			'Home Page'     => 'http://kohanaphp.com/',
			'Documentation' => 'http://docs.kohanaphp.com/',
			'Forum'         => 'http://forum.kohanaphp.com/',
			'License'       => 'Kohana License.html',
			'Donate'        => 'http://kohanaphp.com/donate.html',
		);
	}
 
}

Здесь важно что данный контроллер наследуется от класса Template_Controller, который описан в файле system/controllers/template.php. Имя шаблона и путь к нему задается в строке 4 контроллера welcome.
Если мы посмотрим в папку system/views/kohana, то там и будет наш шаблон template.php. В этом файле есть строки

1
2
<h1><?php echo html::specialchars($title) ?></h1>
<?php echo $content ?>

Они выводят содержимое переменных title и content, которые мы передаем в контроллере welcome. Как мы помним, последняя из этих переменных является объектом View.
Вы заметили, что для нее не вызывается явно метод render()? Дело в том, что если один View-объект является свойством другого, то метод render() буддет вызван автоматически с вызовом этого метода для View-объекта верхнего уровня. Но для него тоже не видно вызова этого метода, да? Если вы загляните в system/controllers/template.php, то увидите, что у Template_Controller есть свойство $this->auto_render == TRUE, которое говорит само за себя.
Итак, вернемся к View-объекту content. Он указывает на application/views/welcome_content.php. И там мы видим только код для внутренней части страницы.

Таким образом мы выносим код view-файлов, который повторяется на каждый странице в файл шаблона и затем ссылаемся к нему. Тем самым мы избавляемся от дублирования кода, а так же получаем простой способ смены шаблона. Это достигается сменой значения свойства $template контроллера.

Читайте о Kohanaphp на страницах этого блога! Я буду рассказывать о том как облегчить вашу сложную работу с помощью мощи Kohana. Чтобы не пропустить следующую статью подпишитесь на RSS или email.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong Rambler Закладки
Tags: , ,

Leave a Reply

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