Работаем с видом — Часть 2

Комментарии: 28  Просмотры: 36 670

Использование метода 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, который позволяет более удобно с ними работать.

<< Назад | Вперед >> | Обсудить на форуме


К записи оставлено 28 коммент.

Вот смотрите, в конструкторе, что наследуется от 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 совсем не простой коим показался.
Ресурс ваш действительно хорош, присоединяюсь к остальным положительным отзывам! Успехов вам в творчестве Денис Васильевич.

надо фурычить тода получится.



Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.