Laravel php в шаблоне

Laravel Blade Including Files

In the Laravel framework, I was wondering if it is possible to include a php file into the blade template, I have tried and failed and was wondering if there is another way I do not know of.

The obvious question here is why would you want to do that? I have a feeling there are better ways to do whatever it is you wish to do.

Please give us a code example or explain what you are trying to do, there could be better/other solutions to your problem.

Unsure of what reason you would have to do this if I am reading this correctly. If you’re after using functions you may have created in another file they can be added to your helpers. Otherwise you could create another blade template file and include it how Yudi replied with.

4 Answers 4

@include('admin.layouts.partials.styles') 
 admin > layouts > partials >styles (styles.blade.php is file) 

You can right raw php in blade using @php and the you can require the php file using require(‘somefile.php’); so the code will be as follows

@php require('somefile.php'); @endphp 

How ever this not recommended! Hope this helps!

Try using include function at laravel blade template :

// File : resource/view/backend/page/form.php @include( 'backend/page/form' ) 

I think he’s after including a specific php file (i.e. functions.php), not another blade template file.

You can use the blade template engine:

‘view.name’ would live in your main views folder

// for laravel 4.X app/views/view/name.blade.php

// for laravel 5.X resources/views/view/name.blade.php Another example

would display the following view

// for laravel 4.X app/views/hello/world.blade.php

// for laravel 5.X resources/views/hello/world.blade.php Another example

@include('some.directory.structure.foo'); 

would display the following view

// for Laravel 4.X app/views/some/directory/structure/foo.blade.php

// for Laravel 5.X resources/views/some/directory/structure/foo.blade.php So basically the dot notation defines the directory hierarchy that your view is in, followed by the view name, relative to app/views folder for laravel 4.x or your resources/views folder in laravel 5.x

If you want to pass parameters: @include(‘view.name’, array(‘paramName’ => ‘value’))

You can then use the value in your views like so

>

Источник

Laravel. Шаблонизатор Blade. Часть 1 из 2

Blade — простой, но мощный шаблонизатор, поставляемый с Laravel. В отличие от других популярных шаблонизаторов не ограничивает в использовании чистого php-кода в шаблонах. Все шаблоны Blade компилируются в чистый php-код и кешируются, до того момента, как в них будет внесены изменения.

Читайте также:  Form builder with php

Наследование шаблонов

Два основных преимущества использования Blade — наследование шаблонов и секции. Поскольку многие веб-приложения используют один общий макет для разных страниц, удобно определить этот макет как один layout-шаблон.

   @yield('title')   id="content"> @yield('content')   

Теперь создадим дочерний шаблон:

@extends('layouts.site') @section('title', 'Заголовок страницы') @section('content') Это основной контент страницы. @endsection

Вместо @yield(‘content’) (англ.выдавать) будет подставлено и отрисовано содержимое секции @section(‘content’) . Директива @yield может принимать дефолтное значение в качестве второго аргумента. Это значение отрисовывается, если секция, которая должна располагаться на этом месте, не определена.

@yield('content', View::make('view.name'))

Рассмотрим еще один пример, где используем директиву @parent . Опять создадим layout-шаблон

   @yield('title', 'Заголовок по умолчанию')   id="content"> @section('content') Это контент страницы по умолчанию. @show   

И создадим два варианта дочернего шаблона:

@extends('layouts.site') @section('title', 'Новый заголовок страницы') @section('content') Это контент замещает контент по умолчанию. @endsection
@extends('layouts.site') @section('title', 'Новый заголовок страницы') @section('content') @parent Это контент дополняет контент по умолчанию. @endsection

Обратите внимание, что в родительском шаблоне вместо @yeld , мы используем @section и @show — что означает окончание секции и вывод содержимого. Другими словами, директивы @yeld и @show отвечают за вывод содержимого секции, а директивы @section и @endsection (синоним @stop ) — только задают содержимое, но ничего не выводят.

Вывод переменных

Для вывода переменных, переданных в Blade-шаблон, используются двойные фигурные скобки:

Route::get('greeting', function ()  return view('welcome', ['name' => 'Сергей']); >);

Аналогично можно выводить результаты любых php-функций:

The current UNIX timestamp is  time() >>.

По умолчанию оператор > прогоняет вывод через функцию htmlspecialchars() для предотвращения XSS-атак. Если данные экранировать не нужно, можно использовать такой синтаксис:

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

В этом примере Blade удалит символ @ , но выражение > останется нетронутым, что позволит JavaScript-фреймворку отрисовать его вместо Blade.

Директива @verbatim позволяет задать область шаблона, где выражения > не будут обрабатываться шаблонизатором Blade:

@verbatim class="container"> Привет,  name >>  surname >>! @endverbatim

Включение подшаблонов

Директива @include позволяет включать один шаблон внутри другого шаблона. Все переменные, доступные родительскому шаблону, будут доступны и включаемому шаблону:

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

@include('view.name', ['some' => 'data'])

Само собой, при попытке @include шаблона, которого не существует — Laravel выдаст ошибку. Директива @includeIf позволяет подключить шаблон, который может и не существовать:

@includeIf('view.name', ['some' => 'data'])

Кроме того, можно подключать шаблон по условию, используя директиву @includeWhen (подключение состоится, если $boolean равно true ) или директиву @includeUnless (подключение состоится, если $boolean равно false ):

@includeWhen($boolean, 'view.name', ['some' => 'data'])
@includeUnless($boolean, 'view.name', ['some' => 'data'])

Условия в шаблонах

Директива @if(…) является полным аналогом if(…) языка PHP:

@if (count($items) === 1) Только один элемент @elseif (count($items) > 1) Несколько элементов @else Вообще нет элементов @endif

Директива @unless(…) является противоположностью директиве @if(…) :

@unless (Auth::check()) Пользователь не аутентифицирован @endunless

Директивы @isset(…) и @empty(…) — просто сокращения для соответствующих php-функций:

@isset($records) Перменная определена и не является null @endisset
@empty($records) Перменная пуста, равно нулю или null @endempty

Директивы @auth и @guest определяют видимость контента для залогиненного пользователя и наоборот.

@auth Пользователь аутентифицирован @endauth
@guest Пользователь не аутентифицирован @endguest

Директивы @switch , @case , @break , @default и @endswitch определяют видимость контента в зависимости от условий.

@switch($i) @case(1) Будет показано, если совпало первое условие @break @case(2) Будет показано, если совпало второе условие @break @default Если не совпало ни одно из условий @endswitch

Циклы в шаблонах

В дополнение к условным операторам есть возможность для работы с конструкциями циклов:

@for ($i = 0; $i  10; $i++) Текущее значение переменной цикла < $i >>  @endfor
@foreach ($users as $user) Текущий пользователь —  $user->name >>  @endforeach
@forelse ($users as $user) Текущий пользователь —  $user->name >>  @empty Нет найдено пользователей @endforelse
@while (true) Этот цикл будет продолжаться вечно @endwhile

При работе с циклами можно выйти из цикла или пропустить текущую итерацию:

 @foreach ($users as $user) @if ($user->admin) @continue @endif Текущий пользователь —  $user->name >>  @if ($user->id == 10) @break @endif @endforeach 

Также можно задать условие для @continue и @break :

 @foreach ($users as $user) @continue($user->admin) Текущий пользователь —  $user->name >>  @break($user->id == 10) @endforeach 

При работе с циклами — внутри цикла будет доступна переменная $loop . Эта переменная позволяет определить текущий индекс цикла, является ли текущая итерация первой или последней и так далее.

@foreach ($users as $user) @if ($loop->first) Это первая итерация цикла @endif @if ($loop->last) Это последняя итерация цикла @endif Текущий пользователь —  $user->name >>  @endforeach
Свойство Описание
$loop->index Индекс текущей итерации цикла (начинается с 0)
$loop->iteration Номер текущей итерации цикла (начинается с 1)
$loop->remaining Число оставшихся итераций цикла
$loop->count Общее число элементов массива
$loop->first Первая итерация цикла?
$loop->last Последняя итерация цикла?
$loop->even Чётная итерация цикла?
$loop->odd Нечётная итерация цикла?
$loop->depth Уровень вложенности текущего цикла
$loop->parent Переменная $loop родительского цикла

Шаблоны для коллекций

Часто возникает ситуация, когда надо в цикле перебрать массив и для отрисовки каждого элемента массива подключить шаблон:

 @foreach ($users as $user) @include('parts.user', ['user' => $user]) @endforeach 
 Пользователь  $user->name >>, почта  $user->email >> 

Вместо foreach() и @include() можно использовать директиву @each() :

Четветртый аргумент @each() задает шаблон, который будет использован, если массив пустой:

@each('parts.user', $users, 'user', 'parts.empty')

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (100)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (147)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (69)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Оцените статью