От автора: в аббревиатуре MVC буква «V» обозначает «Представление». Laravel view разделяет логику приложения и логику представления. Представления хранятся в папке resources/views. Как правило, представление содержит HTML-код, который будет обслуживаться приложением.
Пример
Шаг 1 — Скопируйте следующий код и сохраните его в файле resources/views/test.php
1 2 3 4 5 |
<html> <body> <h1>Hello, World</h1> </body> </html> |
Шаг 2 — Добавьте в файл app/Http/routes.php следующую строку, чтобы задать маршрут для вышеуказанного представления.
1 2 3 |
Route::get('/test', function(){ return view('test'); }); |
Шаг 3 – Перейдите по следующему URL-адресу, чтобы увидеть отображаемый результат. //localhost:8000/test
Шаг 4 – На экране вы должны увидеть следующее.
Передача данных в представление
При создании приложения может потребоваться передать в представление данные. Передайте массив в функцию хелпера представления. После передачи массива мы можем использовать ключ, чтобы получить значение по этому ключу в файле HTML.
Пример
Шаг 1 — Скопируйте в файл resources/views/test.php следующий код и сохраните его
1 2 3 4 5 |
<html> <body> <h1><?php echo $name; ?></h1> </body> </html> |
Шаг 2 — Добавьте следующую строку в файл app/Http/routes.php, чтобы задать маршрут для вышеуказанного представления.
1 2 3 |
Route::get('/test', function(){ return view('test',[‘name’=>’Virat Gandhi’]); }); |
Шаг 3 — Значение имени ключа будет передано в файл test.php, и $name будет заменена этим значением.
Шаг 4 – Перейдите по следующему URL-адресу, чтобы увидеть результат. //localhost:8000/test
Шаг 5 – Вы должны получить следующее:
Совместное использование данных для всех представлений
Мы рассмотрели, как вы можете передать в представления данные, но в некоторых случаях нам необходимо передать данные во все представления. Laravel позволяет сделать это намного проще. Существует метод под названием share(), который можно использовать для этой цели. Метод share() принимает два аргумента, ключ и значение. Обычно метод share() можно вызвать из метода провайдера службы. Мы можем использовать любого провайдера службы, AppServiceProvider или собственного провайдера.
Пример
Шаг 1 — Добавьте в файл app/Http/routes.php следующую строку. app/Http/routes.php
1 2 3 4 5 6 |
Route::get('/test', function(){ return view('test'); }); Route::get('/test2', function(){ return view('test2'); }); |
Шаг 2 — Создайте два файла представления — test.php и test2.php с тем же кодом. Для этих двух файлов мы будем представлять общие данные. Скопируйте следующий код в оба файла: resources/views/test.php и resources/views/test2.php
1 2 3 4 5 |
<html> <body> <h1><?php echo $name; ?></h1> </body> </html> |
Шаг 3 — Измените код метода загрузки в файле app/Providers/AppServiceProvider.php, как показано ниже. (Здесь мы использовали метод share, в результате переданные нами данные будут доступны для всех представлений.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Загрузка любых служб приложения. * * @return void */ public function boot(){ view()->share('name', 'Virat Gandhi'); } /** * Регистрируем службу приложения. * * @return void */ public function register(){ // } } |
Шаг 4 – Перейдите по следующим URL-адресам: //localhost:8000/test и //localhost:8000/test2
Шаг 5 – Вы должны получить следующее.
Шаблоны Blade
Blade — это простой, но мощный движок шаблонов Laravel. Blade — компактный язык шаблонов Laravel, и его синтаксис очень прост в освоении. Шаблон Blade имеет расширение — blade.php и хранится в папке resources/views.
Blade также поддерживает все основные конструкции PHP для создания циклов и условий — @for, @foreach, @while, @if и @elseif, что позволяет обойтись без использования в шаблонах открывающихся и закрывающихся тегов
Пример
Шаг 1. Создайте мастер-шаблон и сохраните его в файле resources/views/layouts/master.blade.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<html> <head> <title>@yield('title')</title> </head> <body> @section('sidebar') This is the master sidebar. @show <div class = "container"> @yield('content') </div> </body> </html> |
Шаг 2 — Здесь, в мастер-шаблоне,
@yield (‘title’) используется для отображения значения заголовка
@section (‘sidebar’) используется для определения раздела с именем sidebar
@show используется для отображения содержимого раздела
@yield (‘content’) используется для отображения содержимого основного блока контента
Шаг 3 — Теперь создайте еще одну страницу, расширяющую мастер-шаблон и сохраните ее в файле resources/views/page.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 |
@extends('layouts.master') @section('title', 'Page Title') @section('sidebar') @parent <p>This is appended to the master sidebar.</p> @endsection @section('content') <h2>{{$name}}</h2> <p>This is my body content.</p> @endsection |
Шаг 4 — Ниже приводится описание каждого элемента.
@extends(‘layouts.master’) используется для расширения мастер-макета. В «’layouts.master» layouts — это имя каталога, в котором мы сохранили главный шаблон, а «.master» относится к мастер-шаблону «master.blade.php», но здесь используется только имя без расширения blade.php
@section(‘title’, ‘Page Title’) — устанавливает значение раздела заголовка.
@section(‘sidebar’) — определяет раздел боковой панели на странице дочернего макета.
@parent — отображает содержимое раздела боковой панели, определенное в мастер-макете.
<p> — добавляется к боковой панели мастер-макета. </p> добавляет содержимое абзаца в раздел боковой панели.
@endsection — завершает раздел боковой панели.
@section (‘content’) — задает раздел контента.
@section (‘content’) — добавляет содержимое абзаца в раздел контента.
@endsection — завершает раздел контента.
Шаг 5 — Теперь настройте маршрут для просмотра этого шаблона. Добавьте в файл app/Http/routes.php следующую строку.
1 2 3 |
Route::get('blade', function () { return view('page',array('name' => 'Virat Gandhi')); }); |
Шаг 6 – Перейдите по следующему URL-адресу, чтобы просмотреть пример шаблона blade. //localhost:8000/blade
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.