[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Уроки Kohana + ZendFramework
Семён
В предыдущем уроке мы оставились на:
<?php

defined('SYSPATH') or die('No direct script access.');

class Controller_Myhello extends Controller {

public function action_privet() {
echo "HELLO WORLD";
}
}


Теперь хотелось бы это вынести в отдельный шаблон.
Для этого укажем нашем контроллеру наш шаблон представления, (к вопросу креведки, некоторые наследует сразу template controller и явно не указывают нужный шаблон), но по мне такая динамика крайне неудобна, т.к. в будущем придётся делать исключения в некоторых ситуациях.

Итак от слов к делу:
1) В папке application/views/guestbook/ создадим файл view.php
2) action_privet меняем на:

public function action_privet() {
$view = View::factory('guestbook/view');
}

Теперь $view - объект представления, в котором можно создать/обозначить наши переменные на шаблоне:

public function action_privet() {
$view = View::factory('guestbook/view');
$view->welcome = "HELLO WORLD";
}

Теперь для того чтобы отобразить наш шаблон нам остаётся добавить:

public function action_privet() {
$view = View::factory('guestbook/view');
$view->welcome = "HELLO WORLD";
$this->response->body($view);
}


В папке application/views/guestbook/ открываем файл view.php
И пишем:
<?=$welcome;?>

На экране видем:
HELLO WORLD



Спустя 1 час, 2 минуты, 27 секунд (1.06.2011 - 10:41) Krevedko написал(а):
вывод шаблона сразу происходит ? если надо в переменную, то здесь как ?
в игнайтере просто присваиваешь переменной и передаешь еще один аргумент-булево значение true.
короче что-то типа
$data['content'] = $this->load->view('main/show_view', $data, true);

Спустя 11 минут, 11 секунд (1.06.2011 - 10:52) Семён написал(а):
Вывод на экран шаблона произойдёт после
$this->response->body($view);

До него инициализируются переменные.

также можно биндить переменные:
Пример:
    $view = View::factory('user/roadtrip')
->
set('places', array('Rome', 'Paris', 'London', 'New York', 'Tokyo'));
->
bind('user', $this->user);


При этом можно сделать конструкциии такого вида:

$another_view = View::factory('user/roadtrip')
->
set('places', array('Rome', 'Paris', 'London', 'New York', 'Tokyo'));
->
bind('user', $this->user);

$view->content = $another_view->render();
$view->another_var = "myVar";
$this->response->body($view);


Если не ошибаюсь этот метод называется fetch

Спустя 13 минут, 13 секунд (1.06.2011 - 11:05) Krevedko написал(а):
ммм...я речь веду про то, что вот после
$this->response->body($view);
произойдет вывод. в игнайтере тоже после
$this->load->view('main/show_view', $data);
произойдет вывод, причем в шаблон show_view.php подставяться данные из массива $data. Но если написать
$data['content'] = $this->load->view('main/show_view', $data, true);
то шаблон с подставленными переменными сам в свою очередь станет элементом массива и его можно будет передать уже в другой шаблон, например основной
$data['content'] = $this->load->view('main/show_view', $data, true);
$this->load->view('main/main_view', $data);

выведет main_view.php и подставит в нужном месте $data['content'].
Мне так удобнее лепить из кусков страницу. Поэтому и спросил, в кохане как с этим.
Цитата

Возвращение отображений как данных
Есть третий опциональный параметр, позволяющий вам изменить поведение функции так, что она будет возвращать данные строкой, вместо того, чтобы отправлять их в браузер. Это может быть полезно, если вы хотите обрабатывать данные другим способом. Если вы установите параметр в TRUE, функция вернет данные. Поведение по умолчанию — FALSE, которое отправляет данные в браузер. Помните, что необходимо присваивать переменной возвращаемые данные:

$string = $this->load->view('myfile', '', true);


Вообще конечно ман бы типа как по игнайтеру офигенный ман
http://whitepiano.ru/user_guide/general/views.html

вроде по кохане есть такой на английском. Хоть на английском...Погуглить надо будет.

Спустя 16 минут, 56 секунд (1.06.2011 - 11:22) Krevedko написал(а):
вот такое пока нашел
http://docs.kohanaphp.com/contents
буду доп-но изучать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.