Frameworks.suFrameworks.su Шпаргалка вебмастера

  • Главная
  • Framework Kohana
  • PHP
  • Javascript
  • CSS
  • Сервисы
    • Генератор паролей
  • Контакты
Главная / PHP / Framework Kohana / Разбираемся с Видом в Kohana

Разбираемся с Видом в Kohana

22.06.2014 0 6568

На данный момент все, что делает наш сайт — это выводит фразу Hello, world !, причем выводит сразу из Контроллера минуя Вид. Но так никто и никогда не делает. Приложение строится на их взаимодействии, причем из Контроллера в Вид можно передавать какие-то данные. Давайте «научим» наш контроллер welcome работать с файлом Вида, который мы сейчас создадим.

Для этого откройте файл контроллера /application/classes/controller/welcome.php и измените его метод следующим образом:

public function action_index()
{
    $this->response->body(View::factory('welcome'));
}

В Кохане файлы Видов находятся в папке /application/views/, где можно также организовывать подпапки для удобства. Еще файлы видов могут лежать в папке /modules/{название модуля}/views/, в том случае, если вид используется в модуле. Поскольку ни о каких модулях пока речи не идет, то создаем файл welcome.php и сохраняем его по следующему пути: /application/views/welcome.php. Внутрь можно засунуть какой-нибудь текст и какие-нибудь html-теги. Ну давайте напишем

<h2>Привет! Это текст из Вида!</h2>

А теперь запустите наш проект. Все вывелось? Отлично.

Как мы видим, у класса View есть статический метод factory. Он на самом деле принимает два параметра. Первый — это название файла Вида. Второй — это массив со значениями, которые будут использоваться в Виде. Метод factory вернет нам новый объект класса View. Который в процессе дальнейшей обработки выведет html-код в браузер, в чем мы только что убедились.

Передача данных в View.

Как говорилось ранее, одной из главных особенностей Контроллеров является возможность передавать данные в файлы Вида. Это позволяет нам держать логику в Контроллерах и Моделях, а представление в Видах. Есть несколько вариантов реализации этого.

Измените метод action_index в Контроллере следующим образом:

public function action_index()
{
    $data = array(
        'name' => 'Иван',
        'age' => 27
    );
    $this->response->body(View::factory('welcome', $data));    
}

а в Виде поменяйте текст на следующий:

<h2>Привет!</h2> Меня зовут, <?php echo $name; ?>. Мне <?php echo $age; ?> лет.

Запустите. Должно вывестись крупным шрифтом "Привет! и ниже Меня зовут, Иван. Мне 27 лет.". После передачи массива в качестве второго параметра произошла его обработка таким образом, что в Виде его ключи стали названиями переменных. Все очень просто, но не всегда удобно. К счастью этот способ — не единственный.

Создание переменных экземпляра класса View.

Рассмотрим еще один способ. Измените код следующим образом:

public function action_index()
{
    $view = View::factory('welcome');
    $view->name = 'Иван';
    $view->age = 27;
    $this->response->body($view);
}

Сохраните, запустите. Не поменялось совершенно ничего, вывод такой же. Но в этот раз мы уже не создаем массив с парами ключ — значение, а используем метод factory, чтобы работать с экземпляром Вида и создаем новые значения.

Использование метода set()

Следующий способ передачи данных в Вид, который мы рассмотрим, будет использование метода set, который есть у класса View. Он принимает два значения, причем первым будет имя, а вторым — значение переменной в файле Вида. Поменяйте метод action_index:

public function action_index()
{
    $view = View::factory('welcome')
        ->set('name', 'Иван')
        ->set('age', 27);
    $this->response->body($view);
}

Сохраните и обновите свою страничку. Использование метода set делает код более читабельным, так как все находится в одном месте.

Использование метода bind()

С помощью этого метода можно легко создавать переменные, которые нам потребуются в Виде уже при создании экземпляра объекта, причем значения им сразу присваивать не обязательно. Измените код следующим образом:

public function action_index()
{
    $view = View::factory('welcome')
        ->bind('name', $name)
        ->bind('age', $age);
    $name = 'Иван';
    $age = 27;
    $this->response->body($view);
}

Запустите. Ничего не поменялось. А теперь уберите строчку $name = ‘Иван’; и запустите снова. И хотя имя уже не выведется, но и сообщения об ошибке мы не получим. Чего нельзя сказать о первых трех способах. Возможно где-то его будет удобнее использовать, чем метод set с последующей проверкой переменной на существование.

Иногда для удобства можно использовать сразу несколько способов передачи данных:

public function action_index()
{
    $view = View::factory('welcome')
        ->bind('age', $age);
    $age = 'больше 17';
    $view->name = 'Иван';
    $this->response->body($view);
}

А теперь добавим в Вид тернарный оператор, как дополнительную проверку:

<h2>Привет! </h2> Меня зовут, <?php echo isset($name)? $name : 'Гость'; ?>.
Мне <?php echo $age; ?> лет.

и удалим в Контроллере строчку

$view->name = 'Иван';

 Запускайте. Так вы получите не ошибку, а Гостя.

Теги:
  • Framework Kohana

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

*

*

*

*

Категории

  • PHP
    • Framework Kohana
  • Javascript
  • CSS
  • Администрирование

Теги

Framework Kohana Пример jQuery Уроки CRON Установка и настройка Backup CSS3 Валидация API Bash Cache Captcha i18n Linux

Авторизация

  • Забыли пароль?
  • Регистрация

Изучение Framework Kohana

  • Установка и настройка Kohana

    Установка и настройка Kohana

    20.06.2014 8984
  • Конфигурирование фреймворка Kohana

    Конфигурирование фреймворка Kohana

    21.06.2014 6760
  • Разбираемся с Видом в Kohana

    Разбираемся с Видом в Kohana

    22.06.2014 6569
  • Сессии в Kohana

    Сессии в Kohana

    03.07.2014 16998
  • Маршрутизаторы в Кохана 3.3

    Маршрутизаторы в Кохана 3.3

    03.04.2015 9847
  • Мультиязычность в Kohana 3.3. Класс i18n

    Мультиязычность в Kohana 3.3. Класс i18n

    04.08.2015 8423

Популярные статьи

  • Находим расстояние до ближайших станций метро

    Находим расстояние до ближайших станций метро

    17.02.2017 102861
  • Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    02.07.2014 44488
  • Собственная система лайков на PHP и JQuery

    Собственная система лайков на PHP и JQuery

    06.04.2015 33151
  • Javascript — сумма прописью

    Javascript — сумма прописью

    07.07.2014 22991
  • Cross-domain ajax с помощью jQuery

    Cross-domain ajax с помощью jQuery

    24.04.2015 19856
Copyright © 2014-2025 Frameworks.su. Все права защищены.