РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
6 of 1392 menu

Директива include

Директива include в Blade позволяет вставлять содержимое одного шаблона в другой. Это удобно для переиспользования общих элементов интерфейса: шапок, подвалов, меню, форм и других компонентов. Первым параметром передаётся путь к шаблону относительно папки resources/views без расширения .blade.php. Вторым параметром можно передать массив данных, которые будут доступны внутри подключаемого шаблона.

Важно понимать, что директива include копирует содержимое подключаемого шаблона в текущий во время рендеринга. Это означает, что все переменные, доступные в родительском шаблоне, автоматически доступны в дочернем. Однако для большей явности рекомендуется передавать нужные данные через второй параметр.

Синтаксис

@include('path.to.template') @include('path.to.template', ['var' => 'value'])

Пример

Создадим файл шапки сайта в resources/views/partials/header.blade.php:

<header> <h1>My Website</h1> <nav> <a href="/">Home</a> <a href="/about">About</a> <a href="/contact">Contact</a> </nav> </header>

Подключим шапку в основном шаблоне resources/views/index.blade.php:

<!DOCTYPE html> <html> <head> <title>Main Page</title> </head> <body> @include('partials.header') <main> <p>Welcome to my website!</p> </main> </body> </html>

Результат рендеринга:

<!DOCTYPE html> <html> <head> <title>Main Page</title> </head> <body> <header> <h1>My Website</h1> <nav> <a href="/">Home</a> <a href="/about">About</a> <a href="/contact">Contact</a> </nav> </header> <main> <p>Welcome to my website!</p> </main> </body> </html>

Пример

Передадим данные в подключаемый шаблон. Создадим шаблон карточки товара в resources/views/partials/product.blade.php:

<div class="product"> <h2>{{ $name }}</h2> <p>Price: ${{ $price }}</p> <p>Description: {{ $description }}</p> </div>

Подключим карточку товара в основном шаблоне и передадим необходимые данные:

<!DOCTYPE html> <html> <head> <title>Products</title> </head> <body> @include('partials.product', [ 'name' => 'Laptop', 'price' => 1200, 'description' => 'Powerful laptop with 16GB RAM' ]) </body> </html>

Результат рендеринга:

<!DOCTYPE html> <html> <head> <title>Products</title> </head> <body> <div class="product"> <h2>Laptop</h2> <p>Price: $1200</p> <p>Description: Powerful laptop with 16GB RAM</p> </div> </body> </html>

Пример

Используем динамические данные из контроллера. Создадим контроллер в app/Http/Controllers/ProductController.php:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ProductController extends Controller { public function index() { $products = [ ['name' => 'Laptop', 'price' => 1200, 'description' => '16GB RAM'], ['name' => 'Phone', 'price' => 800, 'description' => '128GB storage'], ['name' => 'Tablet', 'price' => 400, 'description' => '10 inch screen'] ]; return view('products', ['products' => $products]); } } ?>

Создадим шаблон списка товаров в resources/views/products.blade.php:

<!DOCTYPE html> <html> <head> <title>Product List</title> </head> <body> @foreach ($products as $product) @include('partials.product', $product) @endforeach </body> </html>

Результат рендеринга:

<!DOCTYPE html> <html> <head> <title>Product List</title> </head> <body> <div class="product"> <h2>Laptop</h2> <p>Price: $1200</p> <p>Description: 16GB RAM</p> </div> <div class="product"> <h2>Phone</h2> <p>Price: $800</p> <p>Description: 128GB storage</p> </div> <div class="product"> <h2>Tablet</h2> <p>Price: $400</p> <p>Description: 10 inch screen</p> </div> </body> </html>

Смотрите также

  • директива includeIf,
    которая подключает шаблон только если он существует
  • директива includeWhen,
    которая подключает шаблон при выполнении условия
  • директива extends,
    которая указывает на базовый шаблон для наследования
  • директива section,
    которая определяет секцию контента в шаблоне
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить