Статьи

Сохраните HTML-файл представления в переменной

Если вы использовали язык MVC до того, как познакомились с практикой отделения бизнес-логики от HTML. В MVC-языке это работает так, что среда позволит вам назначить представление (HTML) контроллеру (классу).

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

Laravel Framework

Примером того, как это работает на платформе Laravel, является использование метода make в классе View .

return View::make('greeting', array('name' => 'Taylor'));

Это будет отправлено в представление под названием приветствие с переменной имени, заполненной Тейлором .

<!-- View stored in app/views/greeting.php -->

<html>
    <body>
        <h1>Hello, <?php echo $name; ?></h1>
    </body>
</html>

Laravel Views

В этом уроке мы собираемся воссоздать эту функциональность и отправить переменные, которые можно использовать в файле HTML. Мы также сможем вернуть содержимое этого HTML-кода внутри переменной, чтобы вывести его в любом месте нашего приложения, которое мы хотим.

Для этого мы будем использовать функции контроллера вывода PHP .

Посмотреть файл

Типичный файл представления должен содержать только HTML-код страницы. Этот файл должен использоваться только для вывода содержимого посетителю, и в представлении не должно быть никакой логики. Вся логика в вашем приложении должна быть сделана в контроллере, и это будет отправлено на просмотр.

Ниже приведен простой пример файла представления, содержащего заголовок и содержимое страницы.

<div class="view-file">
    <h1><?php echo $title; ?></h1>

    <p><?php echo $content; ?></p>
</div>

Вызов Просмотр файла

Когда мы вызываем наш файл представления, мы сначала собираемся создать массив переменных, которые можно передать нашему представлению.

Ключ этих значений массива будет превращен в имена переменных на наш взгляд. Поскольку у нас были только переменные title и content, мы можем просто передать их в нашу функцию getView ().

Функция getView () принимает два параметра: первый будет местоположением нашего файла представления, а второй — переменные, отправляемые в файл представления.

<?php
    $vars = array();
    $vars['title'] = 'Page Title';
    $vars['content'] = 'This is an example of displaying content in the view file';

    return $this->getView('view_file.php', $vars);
?>

Получить функцию просмотра

Создание метода для получения файлов представления и возврата его содержимого стало проще благодаря использованию функций управления выводом, встроенных в PHP .

Сначала мы должны убедиться, что файл представления существует. Если файл представления не существует, мы не можем продолжить работу с функцией, поэтому мы просто возвращаем false на этом этапе.

Далее мы можем взять массив переменных и использовать функцию extract () , которая превратит ключи массива в переменные.

// Extract the variables to be used by the view
if(!is_null($vars))
{
    extract($vars);
}

Нам нужно включить файл представления в скрипт, чтобы мы могли использовать эти переменные, но, поскольку мы хотим вернуть содержимое файла представления, нам нужно запретить PHP выводить содержимое файла. Для этого мы запускаем выходной буфер с помощью ob_start () .

ob_start();

После запуска выходного буфера мы включаем файл представления, что означает, что он будет иметь доступ к переменным, которые мы создали с помощью функции extract () .

include_once $viewFile;

Файл представления не является выходом, потому что мы запустили ob_start () . Чтобы получить содержимое того, что находится в буфере, нам нужно использовать другую функцию управления выводом, ob_get_contents () . Это получит то, что будет на выходе и вернет содержимое буфера вывода.

$view = ob_get_contents();

Поскольку мы собрали все выходные данные и не хотим, чтобы что-либо еще было включено в выходные данные файла представления, нам нужно остановить буфер вывода с помощью функции ob_end_clean () .

Наконец, мы можем вернуть содержимое файла представления с HTML-кодом, заполненным переменными, которые мы ему отправили.

Ниже приведен полный метод getView ().

<?php
/**
* Get the view file
*/
public function getView($viewFile, $vars = NULL)
{
    // Check the view file exists
    if(!file_exists($viewFile))
    {
         return false;
    }

    // Extract the variables to be used by the view
    if(!is_null($vars))
    {
        extract($vars);
    }

    ob_start();
 
    include_once $viewFile;
 
    $view = ob_get_contents();
 
    ob_end_clean();
 
    return $view;
}
?>