Использование метода set()
Следующий способ передачи данных в Вид, который мы рассмотрим, будет использование метода set, который есть у класса View. Он принимает два значения, причем первым будет имя, а вторым — значение переменной в файле Вида. Поменяйте метод action_index:
public function action_index() { $view = View::factory('welcome') ->set('name', 'Васька') ->set('age', 25); $this->response->body($view); }
Сохраните и обновите свою страничку. Использование метода set делает код более читабельным, так как все находится в одном месте.
Использование метода bind()
С помощью этого метода можно легко создавать переменные, которые нам потребуются в Виде уже при создании экземпляра объекта, причем значения им сразу присваивать не обязательно. Измените код следующим образом:
public function action_index() { $view = View::factory('welcome') ->bind('name', $name) ->bind('age', $age); $name = 'Васька'; $age = 25; $this->response->body($view); }
Запустите. Ничего не поменялось. А теперь уберите строчку $name = ‘Васька’; и запустите снова. И хотя имя уже не выведется, но и сообщения об ошибке мы не получим. Чего нельзя сказать о первых трех способах. Возможно где-то его будет удобнее использовать, чем метод set с последующей проверкой переменной на существование (PHP-функция isset).
Иногда для удобства можно использовать сразу несколько способов передачи данных:
public function action_index() { $view = View::factory('welcome') ->bind('age', $age); $age = 'больше 18'; $view->name = 'Васька'; $this->response->body($view); }
А теперь добавим в Вид тернарный оператор, как дополнительную проверку:
<h2>Привет! </h2> Меня зовут, <?php echo isset($name)? $name : 'Гость'; ?>. Мне <?php echo $age; ?> лет.
и удалим в Контроллере строчку $view->name = ‘Васька’;. Запускайте. Вы получите не ошибку, а Гостя. Кстати это практически готовый скрипт для залогиненого/незалогиненого пользователя
На этом пока все. В следующем уроке мы рассмотрим Контроллер шаблонов Template Controller, который позволяет более удобно с ними работать.
<< Назад | Вперед >> |
Пожалуйста, зарегистрируйтесь для комментирования.
Вот смотрите, в конструкторе, что наследуется от Controller_Template
public $template = ‘basic’; // объявление шаблона
public function action_index() // запускаю метод
{
// массив с значениями
$book = array(
«author»=>»Лев Толстой»,
«book»=>»Дорогой друг»
);
$this->template->content = View::factory(‘lib’, $book ); // в другой шаблон lib отдаю массив
}
var_dump($author); // таким способом получаю автора «Лев Толстой»
var_dump($book); // но массив он перерабатывает по индексам переводя их в переменные, а я хочу форычить его. Ошибка (ErrorException [ 8 ]: Array to string conversion ~ …)
А что вы тут форичить собрались ? Чтобы форичить нужен хотя бы $book[0]['author'], $book[1]['author'] итд
ладно спс, нужно изучать начинку, kohana совсем не простой коим показался.
Ресурс ваш действительно хорош, присоединяюсь к остальным положительным отзывам! Успехов вам в творчестве Денис Васильевич.
надо фурычить тода получится.