لاراول فولیو
- معرفی
- نصب و راه اندازی
- ایجاد مسیرها
- پارامترهای مسیر
- اتصال مدل مسیر
- رندر هوک
- مسیرهای نامگذاری شده
- میان افزار
- حافظه پنهان مسیر
معرفی
Laravel Folio
یک روتر قدرتمند مبتنی بر صفحه است که برای ساده کردن مسیریابی در برنامه های لاراول طراحی شده است. با Laravel Folio، ایجاد یک مسیر به اندازه ایجاد یک قالب Blade در دایرکتوری برنامه شما آسان می شود
resources/views/pages
.
به عنوان مثال، برای ایجاد صفحه ای که در
/greeting
URL قابل دسترسی است، فقط یک
greeting.blade.php
فایل در فهرست برنامه خود ایجاد کنید
resources/views/pages
:
<div> Hello World</div>
نصب و راه اندازی
برای شروع، Folio را با استفاده از مدیریت بسته Composer در پروژه خود نصب کنید:
composer require laravel/folio
پس از نصب Folio، می توانید
folio:install
دستور Artisan را اجرا کنید که ارائه دهنده خدمات Folio را در برنامه شما نصب می کند. این ارائه دهنده خدمات دایرکتوری را که در آن Folio مسیرها / صفحات را جستجو می کند، ثبت می کند:
php artisan folio:install
مسیرهای صفحه / URI ها
به طور پیشفرض، Folio صفحاتی را از فهرست برنامه شما ارائه میکند
resources/views/pages
، اما میتوانید این فهرستها را در
boot
روش ارائهدهنده خدمات Folio خود سفارشی کنید.
برای مثال، گاهی اوقات ممکن است تعیین چندین مسیر Folio در یک برنامه Laravel راحت باشد. ممکن است بخواهید یک دایرکتوری جداگانه از صفحات Folio برای منطقه "admin" برنامه خود داشته باشید، در حالی که از فهرست دیگری برای بقیه صفحات برنامه خود استفاده می کنید.
شما می توانید این کار را با استفاده از روش های
Folio::path
و انجام دهید
Folio::uri
. این
path
روش دایرکتوری را ثبت میکند که Folio هنگام مسیریابی درخواستهای HTTP ورودی، صفحات را اسکن میکند، در حالی که این
uri
روش، "URI پایه" را برای آن فهرست صفحات مشخص میکند:
use Laravel\Folio\Folio; Folio::path(resource_path('views/pages/guest'))->uri('/'); Folio::path(resource_path('views/pages/admin')) ->uri('/admin') ->middleware([ '*' => [ 'auth', 'verified', // ... ], ]);
مسیریابی زیر دامنه
همچنین می توانید به صفحاتی بر اساس زیر دامنه درخواست ورودی مسیریابی کنید. برای مثال، ممکن است بخواهید درخواستها را
admin.example.com
به دایرکتوری صفحهای متفاوت از بقیه صفحات Folio هدایت کنید. می توانید این کار را با فراخوانی
domain
متد پس از فراخوانی
Folio::path
متد انجام دهید:
use Laravel\Folio\Folio; Folio::domain('admin.example.com') ->path(resource_path('views/pages/admin'));
این
domain
روش همچنین به شما اجازه می دهد تا قسمت هایی از دامنه یا زیر دامنه را به عنوان پارامتر ثبت کنید. این پارامترها به قالب صفحه شما تزریق می شود:
use Laravel\Folio\Folio; Folio::domain('{account}.example.com') ->path(resource_path('views/pages/admin'));
ایجاد مسیرها
میتوانید با قرار دادن یک الگوی Blade در هر یک از فهرستهای نصبشده در Folio، یک مسیر Folio ایجاد کنید. به طور پیشفرض، Folio
resources/views/pages
دایرکتوری را نصب میکند، اما میتوانید این فهرستها را به
boot
روش ارائهدهنده خدمات Folio خود سفارشی کنید.
هنگامی که یک الگوی Blade در یک فهرست نصب شده Folio قرار گرفت، می توانید بلافاصله از طریق مرورگر خود به آن دسترسی داشته باشید. به عنوان مثال، صفحه ای که در آن قرار داده شده است
pages/schedule.blade.php
ممکن است در مرورگر شما در
http://example.com/schedule
.
برای مشاهده سریع لیستی از تمام صفحات / مسیرهای Folio خود، می توانید
folio:list
دستور Artisan را فراخوانی کنید:
php artisan folio:list
مسیرهای تو در تو
می توانید با ایجاد یک یا چند دایرکتوری در یکی از دایرکتوری های Folio یک مسیر تودرتو ایجاد کنید. به عنوان مثال، برای ایجاد صفحه ای که از طریق قابل دسترسی است
/user/profile
، یک
profile.blade.php
الگو در
pages/user
دایرکتوری ایجاد کنید:
php artisan make:folio user/profile # pages/user/profile.blade.php → /user/profile
مسیرهای شاخص
گاهی اوقات، ممکن است بخواهید یک صفحه معین را به عنوان "شاخص" یک فهرست انتخاب کنید. با قرار دادن یک
index.blade.php
الگو در یک پوشه Folio، هر درخواستی به ریشه آن دایرکتوری به آن صفحه هدایت می شود:
php artisan make:folio index# pages/index.blade.php → / php artisan make:folio users/index# pages/users/index.blade.php → /users
پارامترهای مسیر
اغلب، شما نیاز دارید که بخش هایی از URL درخواست دریافتی را به صفحه خود تزریق کنید تا بتوانید با آنها تعامل داشته باشید. برای مثال، ممکن است لازم باشد به «شناسه» کاربری که نمایهاش نمایش داده میشود، دسترسی داشته باشید. برای انجام این کار، میتوانید بخشی از نام فایل صفحه را در براکتهای مربع کپسوله کنید:
php artisan make:folio "users/[id]" # pages/users/[id].blade.php → /users/1
بخش های گرفته شده را می توان به عنوان متغیرهایی در قالب Blade خود مشاهده کرد:
<div> User {{ $id }}</div>
برای گرفتن چندین بخش، می توانید قسمت محصور شده را با سه نقطه پیشوند قرار دهید
...
:
php artisan make:folio "users/[...ids]" # pages/users/[...ids].blade.php → /users/1/2/3
هنگام گرفتن چندین بخش، بخش های گرفته شده به عنوان یک آرایه به صفحه تزریق می شوند:
<ul> @foreach ($ids as $id) <li>User {{ $id }}</li> @endforeach</ul>
اتصال مدل مسیر
اگر قسمتی از نام فایل قالب صفحه شما با یکی از مدل های Eloquent برنامه شما مطابقت داشته باشد، Folio به طور خودکار از قابلیت های اتصال مدل مسیر لاراول استفاده می کند و سعی می کند نمونه مدل حل شده را به صفحه شما تزریق کند:
php artisan make:folio "users/[User]" # pages/users/[User].blade.php → /users/1
مدلهای ضبطشده را میتوان بهعنوان متغیرهایی در قالب Blade خود مشاهده کرد. نام متغیر مدل به "camel case" تبدیل می شود:
<div> User {{ $user->id }}</div>
سفارشی کردن کلید
گاهی اوقات ممکن است بخواهید مدل های محدود Eloquent را با استفاده از ستونی غیر از
id
. برای انجام این کار، می توانید ستون را در نام فایل صفحه مشخص کنید. به عنوان مثال، صفحه ای با نام فایل
[Post:slug].blade.php
سعی می کند مدل محدود شده را از طریق
slug
ستون به جای
id
ستون حل کند.
در ویندوز، برای
-
جدا کردن نام مدل از کلید:
[Post-slug].blade.php
.
مکان مدل
به طور پیش فرض، Folio مدل شما را در
app/Models
فهرست برنامه شما جستجو می کند. با این حال، در صورت نیاز، می توانید نام کلاس مدل کاملاً واجد شرایط را در نام فایل قالب خود مشخص کنید:
php artisan make:folio "users/[.App.Models.User]" # pages/users/[.App.Models.User].blade.php → /users/1
مدل های نرم حذف شده
بهطور پیشفرض، مدلهایی که بهصورت نرمافزاری حذف شدهاند، هنگام حل و فصل پیوندهای مدل ضمنی بازیابی نمیشوند. با این حال، در صورت تمایل، میتوانید به Folio دستور دهید تا مدلهای حذف شده نرمافزار را با فراخوانی
withTrashed
تابع در قالب صفحه بازیابی کند:
<?php use function Laravel\Folio\{withTrashed}; withTrashed(); ?> <div> User {{ $user->id }}</div>
رندر هوک
به طور پیش فرض، Folio محتوای قالب Blade صفحه را به عنوان پاسخ به درخواست دریافتی برمی گرداند. با این حال، می توانید پاسخ را با فراخوانی
render
تابع در قالب صفحه سفارشی کنید.
این
render
تابع یک بسته را میپذیرد که نمونهای را که توسط Folio ارائه میشود دریافت میکند
View
و به شما امکان میدهد دادههای اضافی را به نما اضافه کنید یا کل پاسخ را سفارشی کنید. علاوه بر دریافت
View
نمونه، هر پارامتر مسیر اضافی یا اتصال مدل نیز به بسته ارائه می شود
render
:
<?php use App\Models\Post;use Illuminate\Support\Facades\Auth;use Illuminate\View\View; use function Laravel\Folio\render; render(function (View $view, Post $post) { if (! Auth::user()->can('view', $post)) { return response('Unauthorized', 403); } return $view->with('photos', $post->author->photos);}); ?> <div> {{ $post->content }}</div> <div> This author has also taken {{ count($photos) }} photos.</div>
مسیرهای نامگذاری شده
میتوانید با استفاده از تابع، نامی برای مسیر یک صفحه مشخص کنید
name
:
<?php use function Laravel\Folio\name; name('users.index');
درست مانند مسیرهای نامگذاری شده لاراول، میتوانید از این
route
تابع برای ایجاد URL به صفحات Folio که یک نام به آنها اختصاص داده شده است استفاده کنید:
<a href="{{ route('users.index') }}"> All Users</a>
اگر صفحه دارای پارامترهایی است، می توانید به سادگی مقادیر آنها را به
route
تابع ارسال کنید:
route('users.show', ['user' => $user]);
میان افزار
می توانید با فراخوانی
middleware
تابع در قالب صفحه، میان افزار را به یک صفحه خاص اعمال کنید:
<?php use function Laravel\Folio\{middleware}; middleware(['auth', 'verified']); ?> <div> Dashboard</div>
یا برای تخصیص میانافزار به گروهی از صفحات، میتوانید
middleware
پس از فراخوانی متد، متد را زنجیرهای کنید
Folio::path
.
برای مشخص کردن صفحاتی که میانافزار باید اعمال شود، ممکن است آرایه میانافزار با استفاده از الگوهای URL متناظر صفحاتی که باید روی آنها اعمال شوند، کلید زده شود. این
*
کاراکتر ممکن است به عنوان یک کاراکتر عام استفاده شود:
use Laravel\Folio\Folio; Folio::path(resource_path('views/pages'))->middleware([ 'admin/*' => [ 'auth', 'verified', // ... ],]);
برای تعریف میانافزارهای درون خطی و ناشناس، میتوانید بستههایی را در آرایه میانافزار قرار دهید:
use Closure;use Illuminate\Http\Request;use Laravel\Folio\Folio; Folio::path(resource_path('views/pages'))->middleware([ 'admin/*' => [ 'auth', 'verified', function (Request $request, Closure $next) { // ... return $next($request); }, ],]);
حافظه پنهان مسیر
هنگام استفاده از Folio، همیشه باید از قابلیتهای کش مسیر لاراول
استفاده کنید
. Folio به
route:cache
دستور Artisan گوش می دهد تا مطمئن شود که تعاریف صفحه Folio و نام مسیرها برای حداکثر کارایی به درستی در حافظه پنهان ذخیره می شوند.