Php artisan create view

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

👀 Manage your views in Laravel projects through artisan

License

svenluijten/artisan-view

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

artisan-view

This package adds a handful of view-related commands to Artisan in your Laravel project. Generate blade files that extend other views, scaffold out sections to add to those templates, and more. All from the command line we know and love!

You’ll have to follow a couple of simple steps to install this package.

composer require sven/artisan-view --dev

Registering the service provider

If you’re using Laravel 5.5 or above, you can skip this step. The service provider will have already been registered thanks to auto-discovery.

Otherwise, register Sven\ArtisanView\ServiceProvider::class manually in your AppServiceProvider ‘s register method:

public function register() < if ($this->app->environment() !== 'production') < $this->app->register(\Sven\ArtisanView\ServiceProvider::class); > >

If you now run php artisan you will see two new commands in the list:

# Create a view 'index.blade.php' in the default directory $ php artisan make:view index # Create a view 'index.blade.php' in a subdirectory ('pages') $ php artisan make:view pages.index # Create a view with a different file extension ('index.html') $ php artisan make:view index --extension=html
# Extend an existing view $ php artisan make:view index --extends=app # Add a section to the view $ php artisan make:view index --section=content # Add multiple sections to the view $ php artisan make:view index --section=title --section=content # Add an inline section to the view # Remember to add quotes around the section if you want to use spaces $ php artisan make:view index --section="title:Hello world" # Create sections for each @yield statement in the extended view $ php artisan make:view index --extends=app --with-yields # Add @push directives for each @stack statement in the extended view $ php artisan make:view index --extends=app --with-stacks
# Create a resource called 'products' $ php artisan make:view products --resource # Create a resource with only specific verbs $ php artisan make:view products --resource --verb=index --verb=create --verb=edit
# Remove the view 'index.blade.php' $ php artisan scrap:view index # Remove the view by dot notation $ php artisan scrap:view pages.index

This will ask you if you’re sure. To skip this question, pass the —force flag:

# Don't ask for confirmation $ php artisan scrap:view index --force

Scrapping a REST resource

Читайте также:  Java not required parameters

# Remove the resource called 'products' $ php artisan scrap:view products --resource

This will remove the views products.index , products.show , products.create , and products.edit . If the directory products/ is empty after doing that, it will also be deleted.

You can scrap part of a resource by adding —verb flags:

# Remove the 'products.create' and 'products.edit' views. $ php artisan scrap:view products --resource --verb=create --verb=edit

Of course, all the options work well together like you’d expect. So the following command.

$ php artisan make:view products --resource --extends=app --section="title:This is my title" --section=content

. will put the following contents in products/index.blade.php , products/edit.blade.php , products/create.blade.php , and products/show.blade.php :

@extends('app') @section('title', 'This is my title') @section('content') @endsection

All contributions (in the form on pull requests, issues and feature-requests) are welcome. See the contributors page for all contributors.

sven/artisan-view is licenced under the MIT License (MIT). Please see the license file for more information.

About

👀 Manage your views in Laravel projects through artisan

Источник

Работа с видами (view) в Laravel

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

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

Читайте также:  Extension not loading php

Простейший вид

Для возврата вида из обработчика роута используется глобальная функция view , которая принимает название вида и массив параметров, передаваемых виду (если необходимо). Простейший вид может выглядеть так:

Чтобы вернуть такой вид из обработчика роута:

return view('hello', ['name' => 'User']);

Функция view по умолчанию уже смотрит в папку resources/views , так что ей достаточно передать только название файла. Расширение .blade.php также передавать не нужно.

Фасад View

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

use Illuminate\Support\Facades\View; return View::make('hello', ['name' => 'World']);

Возврат первого существующего вида

Тем не менее, фасад View можно использовать в решении некоторых специфических задач. Например, метод first принимает массив и возвращает первый из видов, который был найден (существует). Это может быть полезно если в вашем веб-приложении существует функционал редактирования видов (к примеру, из админки):

$data = ['key' => 'val']; return View::first(['custom.admin', 'admin'], $data);

Проверка на существование вида

Чтобы проверить существует ли вид, можно использовать метод exists .

if (View::exists('emails.customer')) < // >

Вложенные виды

Очевидно, что в любом хоть сколько-нибудь большом веб-приложении в папке resources/views очень скоро образуется структура и значительная вложенность. Разделителем в Laravel для видов выступает точка, поэтому вернуть вложенный вид resources/views/admin/manage.blade.php можно так:

Передача данных в виды

Основной способ это просто передача массива вторым параметром в функцию view . Другой способ передавать параметры это использование метода with , который принимает название переменной и значение. Вызывать такие методы можно по цепочке:

return view('hello') ->with('name', 'User') ->with('is_admin', false);

Передача данных во все виды

С помощью фасада View можно также передавать определенные данные сразу во все виды — для этого есть метод share . Обычно это делается в сервис-провайдере или в классе middleware.

// внутри сервис провайдера public function boot()

После этого переменная $key будет доступна во всех видах. Если вы делитесь какими-то данные со всеми видами через метод share , следите за уникальностью имен переменных.

View Composers

View Composers это функции-колбэки или методы класса, которые вызываются непосредственно перед моментом, когда вид будет отрисован. Такие функции могут быть полезны, если один и тот же вид возвращается в разных обработчиках роутов, но при этом логика слегка отличается.

View Composers (компоновщики) принято регистрировать в одном из сервис-провайдеров. Хорошей практикой считается создание отдельного провайдера под это. Например, ViewServiceProvider . В методе boot нового провайдера можно регистрировать компоновщики через фасад View и его метод composer . Первым параметром принимается название вида, к которому прикрепляется компоновщик, а вторым параметром передается либо название класса, отвечающего за логику компоновщика, либо функция-замыкание.

Создавая новые провайдеры в приложении, не забывайте добавлять их в массив providers файла конфигурации config/app.php для корректной регистрации.

Замыкание является более простым способом объявления компоновщика, в то время как класс позволяет использовать возможности ООП и подойдет для более сложной логики. Замыкание получает инстанс вида (класс Illuminate\View\View ) как параметр, что позволяет использовать метод with для передачи доп. значений в вид.

Читайте также:  Vs code typescript настройка

В случае использования класса для описания логики компоновщика, следует реализовать метод compose внутри данного класса, отвечающий за прикрепление доп. данных к виду.

В случае класса для доступа к виду используется Dependency Injection инстанса класса Illuminate\View\View . Вы можете внедрить и любые другие зависимости.

Компоновщик для нескольких видов

Для задания компоновщика сразу для множества видов следует первым параметром в метод composer передать массив названий видов вместо строки.

View::composer(['dashboard', 'manage'], function ($view) < $view->with('key', 'val'); >);

View Creators

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

View::creator('manage', function ($view) < $view->with('key', 'val'); >);

Оптимизация/кэширование видов

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

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

Хотя blade-шаблоны компилируются быстро, вы все же можете захотеть добиться еще большей скорости и производительности, скомпилировав все шаблоны предварительно. Обычно это делается в момент деплоя веб-приложения. Для создания готовых версий всех видов, используемых в вашем приложении, используется консольная команда для artisan :

Для сброса кэша используется команда view:clear . В этом случае фреймворк вернется к своей стандартной механике по компилированию шаблонов.

Использование React/Vue видов

Вместо описания стандартных php-шаблонов для фронтенда с помощью шаблонизатора Blade, некоторые разработчики сегодня имеют необходимость писать шаблоны, связанные с Javascript-фреймворками вроде React/Vue. Это возможно в случае, когда фронтенд-логика шаблонов становится сложной и появляется необходимость в одном из таких фреймворков. Например, при разработке SPA приложения.

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

Также Laravel предоставляет стартовые шаблоны приложений, такие как Breeze и Jetstream , где связка с Inertia уже сделана. Все это отдельные большие темы для обсуждения, которых мы не будем касаться в этом базовом материале по видам.

Итоги

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

Источник

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