<?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);
в игнайтере просто присваиваешь переменной и передаешь еще один аргумент-булево значение true.
короче что-то типа
$data['content'] = $this->load->view('main/show_view', $data, true);
Спустя 11 минут, 11 секунд (1.06.2011 - 10:52) Семён написал(а):
Вывод на экран шаблона произойдёт после
До него инициализируются переменные.
также можно биндить переменные:
Пример:
При этом можно сделать конструкциии такого вида:
Если не ошибаюсь этот метод называется fetch
$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'].
Мне так удобнее лепить из кусков страницу. Поэтому и спросил, в кохане как с этим.
$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 написал(а):