Laravel blade подключить файл

Обновлено: 03.07.2024

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

Введение

Laravel – это элегантный, выразительный и гибкий PHP-фреймворк с упором на чистый код и скорость. Он позиционирует себя как «PHP-фреймворк для веб-мастеров». Это бесплатный PHP-фреймворк с открытым исходным кодом, созданный Тейлором Отвелом на основе архитектурной модели Model View Controller (MVC).

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

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

Чтобы вам было легче изучить Laravel, я написал это руководство специально для неопытной аудитории. Так вам будет проще следовать этому руководству и изучать Laravel.

Что вы должны знать перед использованием этого руководства по Laravel?

  • HTML/CSS (Естественно).
  • Понимание базового PHP.
  • Владение PHP на среднем уровне – это не обязательно, но если у вас есть время, изучите некоторые рядовые вещи: ООП в PHP, абстракцию и т. д.
  • Базовое понимание фреймворка MVC.
  • Усидчивость – несмотря на то, что изучать Laravel довольно легко, спустя какое-то время вам всё же придется испытать собственное терпение. По крайней мере, у меня были некоторые проблемы из-за того, что я знал PHP, но совсем не разбирался в фреймворках. Когда я изучал фреймворк или успешно завершал проекты, я всё равно путался с базовыми вещами, которые лежат в основе фреймворка MVC. Но я не сдавался.
  • Увлечение – да ладно вам, ведь веб-разработка – это весело! По крайней мере, когда используешь Laravel. Лучше всего получать наслаждение от своего познавательного путешествия.

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

Требования для установки Laravel 8

Перед установкой Laravel на вашу локальную платформу (Localhost) вам необходимо установить следующие программы:

  • Веб-сервер – Apache или nginx
  • >= PHP 7.3
  • Некоторые расширения PHP, которые можно установить заранее:
  1. BCMath
  2. Ctype
  3. Fileinfo
  4. JSON
  5. Mbstring
  6. OpenSSL
  7. PDO
  8. Tokenizer
  9. XML
  • MySQL (или другие системы управления базой данных, вы даже можете использовать SQLite).
  • Composer
  • IDE (интегрированная среда разработки) будет очень полезна для разработки на Laravel. Я рекомендую VS Code или Atom. И то, и другое можно использовать совершенно бесплатно.

Пошаговая установка Laravel на локальном хосте:

Шаги для пользователей Mac:

  1. Убедитесь, что все компоненты установлены.
  2. Установите Composer, используя следующую команду (если у вас уже установлен и настроен Composer, пропускайте этот шаг).
  • Перейти в нужную папку;
  • Выполнить команду laravel new projectname.

Шаги для пользователей Windows:

  1. Скачайте Composer и установите его.
  2. После успешного завершения установки необходимо проверить, установлен ли он глобально. Откройте командную строку и введите команду «Composer», как показано ниже.
  • Перейти в нужную папку;
  • Зажать клавишу Shift + щелкнуть правой кнопкой мыши и выбрать пункт «Открыть командную строку здесь»;
  • Выполнить команду laravel new projectname/

В нашем примере выполняем:

Руководство по созданию простого CRUD-приложения для составления списка дел на Laravel

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

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

Изучение структуры папок

  • Модели (Models) представляют сущности в базе данных, помогают запрашивать базу данных и возвращать данные.
  • Представления (View) – это страницы, которые будут отображаться при доступе к приложению. Элементы представлений используются для пользовательского интерфейса приложения.
  • Контроллеры (Controllers) обрабатывают запросы пользователей, получают необходимые данные от моделей и передают их представлениям. Контроллеры действуют как посредники между компонентами модели и представления для обработки бизнес-логики, а также входящего запроса.

После того как вы установили Composer и создали свое первое веб-приложение на основе Laravel, вы могли заметить папку приложения с разными файлами и папками внутри. Я знаю, если вы новичок, у вас может возникнуть много вопросов о том, для чего нужны эти папки и т. д. и т. п.

Давайте разберём некоторые из них

Пошаговое создание вашего первого приложения на Laravel

Создайте ваш проект

Если вы не создали свой проект в разделе установки, создайте его сейчас, выполнив следующую команду:

Настройте базу данных

Для нашего приложения нам понадобится база данных, поэтому лучше всего создать её в первую очередь. Laravel поддерживает четыре СУБД:

В этом примере мы будем пользоваться SQLite, так как её проще настроить и использовать. И вам не придется ничего устанавливать – нужно будет всего лишь создать один пустой файл. Другие СУБД должны быть установлены в вашей системе, только потом их можно настраивать соответствующим образом. Laravel позволяет файлу config/database.php настраивать базу данных, но лучше не хранить в нем учетные данные. Вместо этого вы можете использовать файл .env , в котором можно хранить различные типы учетных и других данных.

В корневой папке Laravel по умолчанию находится файл .env .

В этом файле вы найдете код, похожий на следующий:

Замените все шесть строк, приведенные выше на одну строку, указанную ниже, то есть измените значение db_connection на sqlite и удалите остальные строки db, как здесь:

Теперь в папке базы данных создайте файл database.sqlite (это файл базы данных с расширением .sqlite)

Создайте аутентификацию

Laravel также предоставляет «скелет» для аутентификации. Это означает, что всё, связанное с аутентификацией: вход пользователя, регистрация, потеря пароля, двухфакторная аутентификация и т.д. будет создаваться заранее, если вам это необходимо. Это называется Laravel Jetstream .

Есть два способа добавить Jetstream в ваше новое Laravel-приложение. Если вы еще не создали проект, добавьте флажок

для новой команды Laravel:

Так как выше мы уже создали проект, вы можете установить его с помощью установочного пакета. Сначала установите пакет Jetstream , используя следующую команду:

Jetstream в Laravel поддерживает два стека

Liveware или Inerta. Поскольку мы хотим, чтобы этот проект был простым, давайте воспользуемся Livewire и установим Jetstream с помощью следующей команды:

Затем запустите «npm install && npm run dev» , чтобы создать свои объекты.

На данном этапе мы закончили с настройкой и можем приступать непосредственно к созданию приложения.

Миграции

Первый шаг в разработке любого приложения – это создание базы данных. Laravel предлагает отличный способ разработки таблиц и схемы базы данных, а также даёт возможность легко переносить их в разные системы, которые называются «Миграции».

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

Ничего страшного, если это объяснение показалось вам непонятным. Поверьте, скоро у вас всё получится. Просто читайте дальше.

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

Вы найдёте только что созданную миграцию в папке /database/migrations.

Теперь давайте добавим еще два столбца в таблицу задач, отредактировав только что созданный файл миграции.

В новом столбце с именем «description» будет храниться описание задачи, а в столбце с именем «user_id» будет храниться идентификатор пользователя, создавшего задачу. Мы добавили «-> unsigned () -> index ()» после user_if, потому что это внешний ключ из таблицы пользователей.

Теперь мы закончили с созданием схемы базы данных. Чтобы использовать эту схему для создания таблиц в базе данных, выполните следующую команду. Команда migrate обновит изменения, внесенные в схему, в базе данных.

Модели -Eloquent

Eloquent – это ORM (система объектно-реляционного отображения) для Laravel, которая позволяет свободно применять active-record для работы с базой данных. Каждая таблица базы данных может иметь соответствующую модель Eloquent. Модель Eloquent представляет объекты базы данных. Она может использоваться для запроса данных, а также для вставки и обновления данных в таблице. Итак, давайте с помощью команды make: model создадим модель для нашей таблицы задач.

Эта команда создаст модель задачи в папке приложения, как показано ниже.

Отношение «один-ко-многим»

Отношения используются для соединения таблиц. Eloquent даёт возможность связать свои модели через отношения Eloquent. Отношение «один ко многим» означает, что одна модель владеет несколькими объемами другой модели. В нашем примере: у одного пользователя может быть много задач, поэтому между таблицей пользователей и таблицей задач существует связь «один ко многим». Отношения Eloquent очень легко определить и использовать. И преимущество заключается в том, что вам вообще не нужно запускать запросы. Eloquent свяжет модели между собой, поэтому вам придется использовать только функции.

Давайте отредактируем модель задачи и модель пользователя, чтобы создать отношения Eloquent.

Модель задачи (файл task.php находится в app/task.php):

Модель пользователя (файл user.php находится в app/user.php):

Команда Tinker в Artisan (необязательно)

В Laravel существует интерфейс командной строки, известный как Artisan. Artisan содержит различные команды, и среди них – Tinker, которую мы собираемся обсудить. Tinker позволяет вам взаимодействовать со всем вашим Laravel- приложением через окно консоли без необходимости доступа к веб-интерфейсу. Основным преимуществом Tinker является то, что вы можете тестировать отношения, отлаживать данные и получать доступ к Eloquent ORM, задачам, тестам, событиям и т. д. Поэтому мы также будем использовать команду Tinker в нашем руководстве по Laravel. Допустим, вы зарегистрировались в приложении и создали две задачи. Теперь вы проверяете эти задачи прямо в окне консоли, как показано ниже:

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

Контроллеры

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

Маршрутизация

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

  • Авторизоваться;
  • Зарегистрироваться;
  • Показать список всех наших задач;
  • Добавить новые задачи;
  • Удалить существующие задачи.

Laravel Jetstream добавляет вход и регистрацию, поэтому теперь нам нужно позаботиться только о трех маршрутах.

Laravel предоставляет различные файлы маршрутов внутри папки / routes для разных случаев использования. Например, настройка маршрутизации для API будет находиться в файле « /routes/api.php », а настройка маршрутизации для нашего веб-приложения будет находиться в «/routes/web.php».

Теперь давайте отредактируем файл web.php . Ниже вы увидите отредактированную версию этого файла. Внесите соответствующие изменения:

Здесь мы внесли два изменения:

  1. Мы сгруппировали все маршруты, чтобы можно было применять auth: sanctum и проверенное промежуточное программное обеспечение ко всем маршрутам, тем самым давая доступ к этим страницам только проверенным пользователям, вошедшим в систему.
  2. Мы изменили маршрут для панели управления, который теперь будет передавать запрос в функцию index в TaskController . Также мы создали маршруты для других действий.

Представления – шаблоны Blade

  1. blade.php (панель управления покажет список задач);
  2. blade.php (форма, которая позволит вам добавить новую задачу);
  3. blade.php (форма, которая позволит вам отредактировать любую задачу).

Laravel включает в себя довольно удобный макет, который содержит панель навигации под названием app.blade.php , расположенную в папке Views / layouts . С помощью механизма Blade в Laravel вы cможете разделить свои страницы на подсекции, а также использовать раздел панели навигации по умолчанию в новых представлениях.

Теперь в папке / resources / views создайте файлы add.blade.php и edit.blade.php с разметкой, приведенной ниже.

В файле dashboard.blade.php также замените весь код на тот, который приведен выше. Представления мы отредактируем позже, после определения функций нашего контроллера с помощью привязки модели к маршруту.

Привязка модели к маршруту (Route-Model Binding)

В Laravel есть множество удивительных функций, которые делают веб-разработку простой, чистой и менее трудоемкой. Одна из наиболее заметных функций подобного рода – привязка модели к маршруту (Route-Model Binding). Это механизм для внедрения экземпляра модели в ваши маршруты. Это значит, вы можете передавать объект модели в маршруты, а также в представления по маршрутам. Эта функция поможет вам легко получить значения объекта в представлении. Ничего страшного, если это объяснение кажется непонятным. Со временем вы все поймёте.

Теперь давайте добавим в TasksController.php функции, обрабатывающие указанные выше маршруты. Они должны выглядеть так, как показано ниже:

Как вы можете видеть, я передаю в функцию объект «Task $ task», а также объект «Request $ request» с помощью механизма привязки модели маршрута.

Редактируем представления

Теперь функции контроллера настроены и возвращают соответствующие представления с прикрепленными объектами модели. Итак, теперь нужно отредактировать наши представления, чтобы они, если нужно, показывали форму и необходимые данные, используя объекты модели, переданные по маршрутам.

Откройте файл dashboard.blade.php и отредактируйте его следующим образом:

Механизм шаблонов Blade позволяет нам использовать PHP внутри HTML, не заключая его в «<? Php?>».

Откройте файл add.blade.php и отредактируйте его следующим образом:

Откройте файл edit.blade.php и отредактируйте его, как показано ниже:

После редактирования этого представления мы собираем все части воедино, так что теперь сможем протестировать своё приложение.

Сначала зарегистрируйтесь, затем войдите в систему, а потом проверьте, можете ли вы создать задачу, отредактировать задачу и удалить задачу.

Запускаем проект на Localhost

Чтобы запустить проект, запустите в окне терминала команду php artisan serve. Убедитесь, что вы находитесь в корне вашего приложения в терминале.

Обязательно прочтите инструкции, прежде чем копировать код с github .

Что делать с этим проектом дальше:

Существует множество вещей, которые можно добавить в этот проект, например:

  • Проверка формы:
  • Разрешение пользователю создавать несколько списков с несколькими задачами;
  • Профиль пользователя;
  • И многое другое.

Заключение

Надеюсь, что это руководство по Laravel помогло вам понять основы Laravel, а также мотивировало вас учиться дальше. Пожалуйста, поделитесь своим мнением о Laravel и об этом руководстве. А также вы можете делиться в комментариях к этой статье вашими вопросами и проблемами. Будем рады вам помочь. Спасибо.

Пожалуйста, оставьте свои отзывы по текущей теме материала. За комментарии, подписки, дизлайки, отклики, лайки низкий вам поклон!

Laravel 7 Blade Component

Давайте посмотрим, что седьмая версия фреймворка привнесла в компоненты шаблонов.

Макетный способ

Сначала взглянем на макетный вариант повторного использования шаблонов. Создаем папку layout , а в папке view — файл app-layout.blade.php , используемый в welcome.blade.php .

Мы задали макет в app-layout.blade.php и раскрыли его в шаблоне welcome.blade.php . Это называется восходящим подходом.

Старый компонентный подход

Теперь давайте теперь рассмотрим старый компонентный подход. Файл welcome.blade.php будет таким:

а в файле app-layout.blade.php будут такие изменения:

В итоге, мы получим тот же самый результат. Это старый способ использования компонентов, и возникает вопрос: а что нового принес Laravel 7?

Новый компонентный подход

Давайте попробуем реализуем всё тоже самое, но с помощью нового компонентного подхода.

Эта команда создаст два файла вместе со каркасными каталогами. Модель шаблона — App\View\Components\AppLayout.php и сам шаблон resources\views\components\app-layout.blade.php .

Файл AppLayout.php будет выглядеть так:

Разберемся, как использовать эти файлы. Скопируем наш файл app-layout.blade.php в папку components и изменим welcome.blade.php

Мы используем кастомный тег, также как и у компонентов Vue. Контент тега будет отображаться через > в файле components\app-layout.blade.php . Здесь мы можем видеть новый способ задания имени компонента — Laravel пропарсит x- .

Напоминание: предыдущий способ использования компонента не удаляется!! Используйте тот, который удобен вам.

Передача данных компоненту

Мы можем передавать данные или атрибуты компонентам таким образом

в файле AppLayout.php :

Здесь мы получаем заголовок и задаем его как публичное свойство, чтобы можно было его использовать в компоненте app-layout .

И далее используем его в app-layout.blade.php .

Кастомные слоты

Зачем нам нужны кастомные слоты? Предположим, что нужно показывать условную боковую панель. Что-то вроде этого:

И использовать внутри welcome.blade.php как

Аналогичным образом мы можем создавать компоненты и повторно использовать blade-шаблоны.

Blade - простой, но мощный движок шаблонов, поставляемый с Laravel. В отличие от других популярных шаблонизаторов PHP, Blade не запрещает вам использовать простой PHP-код в ваших представлениях. Фактически, все представления Blade скомпилированы в простой PHP-код и кэшируются до тех пор, пока они не будут изменены, а это означает, что Blade практически не увеличивает накладные расходы на ваше приложение. Файлы блэйд-вида используют расширение файла и обычно хранятся в каталоге. .blade.php resources/views

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

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

Как видите, этот файл содержит типичную разметку HTML. Тем не менее, принять к сведению @section и директив. Директива, как следует из названия, определяет сечение содержания, в то время как директива используется для отображения содержимого данного раздела. @yield @section @yield

Теперь, когда мы определили макет для нашего приложения, давайте определим дочернюю страницу, которая наследует макет.

Расширение макета

При определении дочернего представления используйте директиву Blade, чтобы указать, какой макет дочернее представление должно «наследовать». Представления, расширяющие макет Blade, могут вводить контент в разделы макета с помощью директив. Помните, как видно из приведенного выше примера, содержимое этих разделов будет отображаться в макете с помощью : @extends @section @yield

В этом примере sidebar раздел использует директиву для добавления (а не перезаписи) содержимого к боковой панели макета. Директива будет заменено на содержимое макета , когда представление визуализируется. @parent @parent

В отличие от предыдущего примера, этот sidebar раздел заканчивается @endsection вместо @show . @endsection Директива будет определять только раздел в то время как @show будет определять и сразу выход из этой секции.

Директива также принимает значение по умолчанию , в качестве второго параметра. Это значение будет отображено, если получаемый раздел не определен: @yield

Блейд-представления могут быть возвращены из маршрутов с помощью глобального view помощника:

Компоненты и слоты

Компоненты и слоты обеспечивают аналогичные преимущества для разделов и макетов; однако, некоторые могут найти ментальную модель компонентов и слотов более легкой для понимания. Во-первых, давайте представим повторно используемый компонент «оповещения», который мы хотели бы использовать в нашем приложении:

Переменная будет содержать контент мы хотим ввести в компонент. Теперь, чтобы построить этот компонент, мы можем использовать директиву Blade: > @component

Иногда полезно определить несколько слотов для компонента. Давайте изменим наш компонент оповещения, чтобы добавить «заголовок». Именованные слоты могут отображаться путем «повторения» переменной, соответствующей их имени:

Теперь мы можем внедрить содержимое в указанный слот, используя @slot директиву. Любое содержимое, не входящее в @slot директиву, будет передано компоненту в $slot переменной:

Передача дополнительных данных в компоненты

Иногда вам может потребоваться передать дополнительные данные компоненту. По этой причине вы можете передать массив данных в качестве второго аргумента @component директиве. Все данные будут доступны для шаблона компонента в виде переменных:

Алиасинг компонентов

Если ваши компоненты Blade хранятся в подкаталоге, вы можете использовать псевдонимы для более легкого доступа. Например, представьте компонент Blade, который хранится в . Вы можете использовать метод для псевдонима компонента из в . Как правило, это должно быть сделано в методе вашего : resources/views/components/alert.blade.php component components.alert alert boot AppServiceProvider

После того, как компонент был псевдоним, вы можете отобразить его с помощью директивы:

Вы можете опустить параметры компонента, если у него нет дополнительных слотов:

Отображение данных

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

Вы можете отобразить содержимое name переменной следующим образом:

Операторы Blade автоматически отправляются через функцию PHP, чтобы предотвратить атаки XSS. > htmlspecialchars

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

Отображение неэкранированных данных

По умолчанию операторы Blade автоматически отправляются через функцию PHP, чтобы предотвратить атаки XSS. Если вы не хотите, чтобы ваши данные были экранированы, вы можете использовать следующий синтаксис: > htmlspecialchars

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

Рендеринг JSON

Иногда вы можете передать массив вашему представлению с намерением отобразить его как JSON, чтобы инициализировать переменную JavaScript. Например:

Однако вместо ручного вызова json_encode вы можете использовать @json директиву Blade. @json Директива принимает те же аргументы, что и в PHP json_encode функции:

Вы должны использовать @json директиву только для визуализации существующих переменных в формате JSON. Шаблонирование Blade основано на регулярных выражениях, и попытки передать сложное выражение в директиву могут вызвать неожиданные сбои.

@json Директива также полезна для высева компонентов Vue или атрибутов: data-*

Использование @json атрибутов in требует, чтобы он был заключен в одинарные кавычки.

HTML Entity Encoding

По умолчанию Blade (и e помощник Laravel ) будут дважды кодировать сущности HTML. Если вы хотите отключить двойное кодирование, вызовите метод из метода вашего : Blade::withoutDoubleEncoding boot AppServiceProvider

Blade & JavaScript Framework

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

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

@verbatim Директива

Если вы отображаете переменные JavaScript в большой части вашего шаблона, вы можете заключить HTML-код в @verbatim директиву, чтобы вам не приходилось ставить перед каждым оператором Blade echo префикс @ :

Управляющие структуры

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

Вы можете построить if заявления , используя , , и директивы. Эти директивы функционируют идентично своим аналогам PHP: @if @elseif @else @endif

Для удобства Blade также предоставляет @unless директиву:

В дополнение к условным директивам, которые уже обсуждались, директивы @isset and @empty могут использоваться как удобные ярлыки для их соответствующих функций PHP:

Директивы аутентификации

В @auth и @guest директивы могут использоваться , чтобы быстро определить , если текущий пользователь проходит проверку подлинности или гость:

При необходимости вы можете указать защиту аутентификации, которую следует проверять при использовании директив @auth and @guest :

Директивы раздела

Вы можете проверить, содержит ли раздел содержимое, используя @hasSection директиву:

Переключение операторов

Заявления коммутатора могут быть построены с использованием , , , и директивы: @switch @case @break @default @endswitch

Loops

В дополнение к условным операторам Blade предоставляет простые директивы для работы со структурами циклов PHP. Опять же, каждая из этих директив функционирует идентично своим аналогам PHP:

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

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

Вы также можете включить условие с объявлением директивы в одну строку:

Переменная Loop

При зацикливании $loop переменная будет доступна внутри вашего цикла. Эта переменная обеспечивает доступ к некоторым полезным битам информации, таким как индекс текущего цикла и является ли это первой или последней итерацией цикла:

Если вы находитесь во вложенном цикле, вы можете получить доступ к $loop переменной родительского цикла через parent свойство:

$loop Переменная содержит также множество других полезных свойств:

Имущество Описание
$loop->index Индекс текущей итерации цикла (начинается с 0).
$loop->iteration Текущая итерация цикла (начинается с 1).
$loop->remaining Итерации, оставшиеся в цикле.
$loop->count Общее количество элементов в массиве, которое повторяется.
$loop->first Является ли это первой итерацией цикла.
$loop->last Является ли это последней итерацией цикла.
$loop->even Является ли это четной итерацией в цикле.
$loop->odd Является ли это нечетной итерацией в цикле.
$loop->depth Уровень вложенности текущего цикла.
$loop->parent Находясь во вложенном цикле, родительская переменная цикла.

Комментарии

Blade также позволяет вам определять комментарии в ваших представлениях. Однако, в отличие от комментариев HTML, комментарии Blade не включаются в HTML, возвращаемый вашим приложением:

В некоторых ситуациях полезно встроить PHP-код в ваши представления. Вы можете использовать @php директиву Blade, чтобы выполнить блок простого PHP внутри вашего шаблона:

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

Формы

Каждый раз, когда вы определяете HTML-форму в своем приложении, вы должны включить в форму скрытое поле токена CSRF, чтобы промежуточное ПО защиты CSRF могло проверить запрос. Вы можете использовать @csrf директиву Blade для генерации поля токена:

Поле метода

Ошибки валидации

Включая подвиды

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

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

Если вы попытаетесь создать несуществующее представление, Laravel выдаст ошибку. Если вы хотите включить представление, которое может присутствовать или не присутствовать, вы должны использовать директиву: @include @includeIf

Если вы хотите использовать представление в зависимости от заданного логического условия, вы можете использовать директиву: @include @includeWhen

Чтобы включить первое представление, которое существует из данного массива представлений, вы можете использовать includeFirst директиву:

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

Псевдоним включает

Если ваши Blade-файлы хранятся в подкаталоге, вы можете создать псевдонимы для более легкого доступа. Например, представьте, что Blade- содержимое хранится со следующим содержимым: resources/views/includes/input.blade.php

Вы можете использовать include метод для псевдонима включения из в . Как правило, это должно быть сделано в методе вашего : includes.input input boot AppServiceProvider

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

Визуализация представлений для коллекций

Вы можете объединить циклы и включения в одну строку с помощью @each директивы Blade :

Первым аргументом является частичное представление, отображаемое для каждого элемента в массиве или коллекции. Второй аргумент - это массив или коллекция, для которой вы хотите выполнить итерацию, а третий аргумент - это имя переменной, которая будет назначена текущей итерации в представлении. Так, например, если вы выполняете итерации по массиву jobs , как правило, вы захотите получить доступ к каждому заданию в качестве job переменной в вашем частичном представлении. Ключ для текущей итерации будет доступен в качестве key переменной в вашем частичном представлении.

Вы также можете передать четвертый аргумент @each директиве. Этот аргумент определяет представление, которое будет отображаться, если данный массив пуст.

Представления, представленные через @each , не наследуют переменные от родительского представления. Если дочернее представление требует этих переменных, вы должны использовать и вместо этого. @foreach @include

Стеки

Blade позволяет перемещаться в именованные стеки, которые могут быть отображены в другом месте в другом представлении или макете. Это может быть особенно полезно для указания любых библиотек JavaScript, требуемых вашими дочерними представлениями:

Вы можете вставлять в стек столько раз, сколько необходимо. Чтобы отобразить полное содержимое стека, передайте имя стека в @stack директиву:

Если вы хотите добавить содержимое в начало стека, вы должны использовать @prepend директиву:

Сервисная инъекция

@inject Директива может быть использована для получения услуги от Laravel контейнера службы. Первый передаваемый аргумент @inject - это имя переменной, в которую будет помещена служба, а второй аргумент - имя класса или интерфейса службы, которую вы хотите разрешить:

Удлиняющий Blade

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

В следующем примере создается директива, которая форматирует данные , которые должны быть экземпляром : @datetime($var) $var DateTime

Как видите, мы будем связывать format метод с любым выражением, переданным в директиву. Итак, в этом примере окончательный PHP, сгенерированный этой директивой, будет:

После обновления логики директивы Blade вам необходимо удалить все кэшированные представления Blade. Кэшированные виды Blade могут быть удалены с помощью команды Artisan. view:clear

Пользовательские заявления If

Программирование пользовательской директивы иногда сложнее, чем необходимо при определении простых, пользовательских условных операторов. По этой причине Blade предоставляет метод, который позволяет быстро определять пользовательские условные директивы с помощью Closures. Например, давайте определим пользовательское условие, которое проверяет текущую среду приложения. Мы можем сделать это в методе нашего : Blade::if boot AppServiceProvider

Как только пользовательское условие было определено, мы можем легко использовать его в наших шаблонах:

От автора: в аббревиатуре MVC буква «V» обозначает «Представление». Laravel view разделяет логику приложения и логику представления. Представления хранятся в папке resources/views. Как правило, представление содержит HTML-код, который будет обслуживаться приложением.

Пример

Шаг 1 — Скопируйте следующий код и сохраните его в файле resources/views/test.php


Фреймворк Laravel. Быстрый старт

Получите курс и узнайте, как cоздать веб-приложение на фреймворке Laravel!

Шаг 3 – Перейдите по следующему URL-адресу, чтобы увидеть отображаемый результат. //localhost:8000/test

Шаг 4 – На экране вы должны увидеть следующее.

Laravel view — представления

Передача данных в представление

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

Пример

Шаг 4 – Перейдите по следующему URL-адресу, чтобы увидеть результат. //localhost:8000/test

Шаг 5 – Вы должны получить следующее:

Laravel view — представления

Совместное использование данных для всех представлений

Мы рассмотрели, как вы можете передать в представления данные, но в некоторых случаях нам необходимо передать данные во все представления. Laravel позволяет сделать это намного проще. Существует метод под названием share(), который можно использовать для этой цели. Метод share() принимает два аргумента, ключ и значение. Обычно метод share() можно вызвать из метода провайдера службы. Мы можем использовать любого провайдера службы, AppServiceProvider или собственного провайдера.

Читайте также: