بازدیدها
معرفی
البته، بازگرداندن کل رشته های اسناد HTML مستقیماً از مسیرها و کنترلرها عملی نیست. خوشبختانه، نماها راهی مناسب برای قرار دادن تمام HTML ما در فایلهای جداگانه ارائه میکنند.
نماها منطق کنترلر/برنامه شما را از منطق ارائه شما جدا می کنند و در
resources/views
دایرکتوری ذخیره می شوند. هنگام استفاده از لاراول، قالبهای View معمولاً
با استفاده از
زبان قالب Blade
نوشته میشوند
. یک نمای ساده ممکن است چیزی شبیه به این باشد:
<!-- View stored in resources/views/greeting.blade.php --> <html> <body> <h1>Hello, {{ $name }}</h1> </body></html>
از آنجایی که این نما در ذخیره شده است ، ممکن است آن را با استفاده از
راهنمای جهانی مانند زیر
resources/views/greeting.blade.php
برگردانیم :
view
Route::get('/', function () { return view('greeting', ['name' => 'James']);});
به دنبال اطلاعات بیشتر در مورد نحوه نوشتن الگوهای Blade هستید؟ برای شروع، مستندات کامل Blade را بررسی کنید.
نوشتن Views در React / Vue
بسیاری از توسعه دهندگان به جای نوشتن قالب های ظاهری خود در PHP از طریق Blade شروع به نوشتن قالب های خود با استفاده از React یا Vue کرده اند. لاراول به لطف Inertia این کار را بدون درد انجام می دهد ، کتابخانه ای که اتصال React/Vue Frontend خود را به باطن Laravel خود بدون پیچیدگی های معمولی SPA می سازد.
کیتهای استارتر Breeze و Jetstream ما یک نقطه شروع عالی برای برنامه بعدی Laravel شما که توسط Inertia طراحی شده است، به شما میدهد. علاوه بر این، Laravel Bootcamp نمایش کاملی از ساخت یک برنامه Laravel با اینرسی ارائه می دهد، از جمله نمونه هایی در Vue و React.
ایجاد و ارائه نماها
می توانید با قرار دادن یک فایل با
.blade.php
پسوند در فهرست برنامه خود، یک نمای ایجاد کنید
resources/views
. پسوند
.blade.php
به چارچوب اطلاع می دهد که فایل حاوی یک
الگوی Blade
است . قالبهای Blade حاوی دستورالعملهای HTML و Blade هستند که به شما
امکان میدهند به راحتی مقادیر را اکو کنید، عبارات «if» را ایجاد کنید، روی دادهها تکرار کنید و موارد دیگر.
هنگامی که یک View ایجاد کردید، می توانید آن را از یکی از مسیرها یا
کنترلرهای برنامه خود با استفاده از
view
راهنمای جهانی بازگردانید:
Route::get('/', function () { return view('greeting', ['name' => 'James']);});
نماها همچنین ممکن است با استفاده از نما بازگردانده شوند
View
:
use Illuminate\Support\Facades\View; return View::make('greeting', ['name' => 'James']);
همانطور که می بینید، اولین آرگومان ارسال شده به
view
helper مربوط به نام فایل view در
resources/views
دایرکتوری است. آرگومان دوم آرایه ای از داده ها است که باید در دسترس view
قرار گیرد. در این حالت، متغیری را ارسال می کنیم که با استفاده از
دستور Blade
name
در نمای نمایش داده می شود
.
فهرست راهنماهای نمایش تودرتو
نماها همچنین ممکن است در زیر شاخه های دایرکتوری تودرتو باشند
resources/views
. نماد "نقطه" ممکن است برای ارجاع به نماهای تودرتو استفاده شود. به عنوان
مثال، اگر نمای شما در ذخیره شده است
resources/views/admin/profile.blade.php
، می توانید آن را از یکی از مسیرها / کنترلرهای برنامه خود بازگردانید:
return view('admin.profile', $data);
نمایش نام دایرکتوری نباید حاوی
.
کاراکتر باشد.
ایجاد اولین نمای موجود
با استفاده از روش
View
نما
first
، می توانید اولین نمای موجود در یک آرایه معین از نماها را ایجاد کنید. این
ممکن است مفید باشد اگر برنامه یا بسته شما اجازه می دهد نماها سفارشی یا بازنویسی شوند:
use Illuminate\Support\Facades\View; return View::first(['custom.admin', 'admin'], $data);
تعیین اینکه آیا دیدگاه وجود دارد
اگر نیاز به تعیین وجود نما دارید، می توانید از
View
نما استفاده کنید.
اگر view وجود داشته باشد
متد
exists
برمی گردد :
true
use Illuminate\Support\Facades\View; if (View::exists('emails.customer')) { //}
انتقال داده به نماها
همانطور که در مثالهای قبلی دیدید، میتوانید آرایهای از دادهها را به viewها ارسال کنید تا آن دادهها را در دسترس view قرار دهید:
return view('greetings', ['name' => 'Victoria']);
هنگام انتقال اطلاعات به این روش، داده ها باید یک آرایه با جفت کلید /
مقدار باشد. پس از ارائه داده به یک نما، سپس می توانید با استفاده از کلیدهای داده، مانند
<?php echo $name; ?>
.
به عنوان جایگزینی برای ارسال یک آرایه کامل از دادهها به
view
تابع کمکی، میتوانید از
with
روشی برای افزودن تک تک دادهها به نمای استفاده کنید. متد
with
نمونه ای از شی view را برمی گرداند تا بتوانید قبل از برگرداندن view به
زنجیره زدن متدها ادامه دهید:
return view('greeting') ->with('name', 'Victoria') ->with('occupation', 'Astronaut');
اشتراک گذاری داده ها با همه نماها
گاهی اوقات، ممکن است لازم باشد داده ها را با همه نماهایی که توسط برنامه
شما ارائه می شود به اشتراک بگذارید. می توانید این کار را با استفاده از روش
View
نما انجام دهید
share
. به طور معمول، شما باید فراخوانی های
share
متد را در متد ارائه دهنده خدمات قرار دهید
boot
. شما آزاد هستید که آنها را به
App\Providers\AppServiceProvider
کلاس اضافه کنید یا یک ارائه دهنده خدمات جداگانه برای آنها ایجاد کنید:
<?php namespace App\Providers; use Illuminate\Support\Facades\View; class AppServiceProvider extends ServiceProvider{ /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { View::share('key', 'value'); }}
نمایش composerان
View composer ها callback یا متدهای کلاسی هستند که هنگام رندر شدن یک view فراخوانی می شوند. اگر دادههایی دارید که میخواهید هر بار که آن نما ارائه میشود به یک نما متصل شود، یک View composer میتواند به شما کمک کند آن منطق را در یک مکان واحد سازماندهی کنید. اگر نمای یکسان توسط چندین مسیر یا کنترلر در برنامه شما بازگردانده شود و همیشه به یک قطعه داده خاص نیاز داشته باشد، ممکن است کامپوزیتورهای View بسیار مفید باشند.
به طور معمول، View composers در یکی از ارائه دهندگان خدمات
برنامه شما ثبت می شود
. در این مثال، فرض میکنیم که یک منطق جدید ایجاد کردهایم
App\Providers\ViewServiceProvider
تا این منطق را در خود جای دهد.
ما از روش
View
نما
composer
برای ثبت View composer استفاده می کنیم. لاراول یک دایرکتوری پیشفرض برای
نویسندگان view مبتنی بر کلاس ندارد، بنابراین میتوانید آنها را هر طور که میخواهید سازماندهی کنید. به عنوان
مثال، می توانید یک
app/View/Composers
فهرست راهنما ایجاد کنید تا همه نویسندگان view برنامه خود را در خود جای
دهد:
<?php namespace App\Providers; use App\View\Composers\ProfileComposer;use Illuminate\Support\Facades\View;use Illuminate\Support\ServiceProvider; class ViewServiceProvider extends ServiceProvider{ /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { // Using class based composers... View::composer('profile', ProfileComposer::class); // Using closure based composers... View::composer('dashboard', function ($view) { // }); }}
به یاد داشته باشید، اگر یک ارائهدهنده سرویس جدید ایجاد میکنید که شامل ثبتهای view composer شما باشد، باید ارائهدهنده سرویس را به
providers
آرایه درconfig/app.php
فایل پیکربندی اضافه کنید.
اکنون که composer را ثبت کرده ایم، هر بار که
view در حال رندر شدن باشد،
compose
متد
App\View\Composers\ProfileComposer
کلاس اجرا می شود .
profile
بیایید به نمونه ای از کلاس composer نگاهی بیندازیم:
<?php namespace App\View\Composers; use App\Repositories\UserRepository;use Illuminate\View\View; class ProfileComposer{ /** * The user repository implementation. * * @var \App\Repositories\UserRepository */ protected $users; /** * Create a new profile composer. * * @param \App\Repositories\UserRepository $users * @return void */ public function __construct(UserRepository $users) { $this->users = $users; } /** * Bind data to the view. * * @param \Illuminate\View\View $view * @return void */ public function compose(View $view) { $view->with('count', $this->users->count()); }}
همانطور که می بینید، همه نویسندگان view از طریق کانتینر سرویس حل می شوند ، بنابراین می توانید هر وابستگی مورد نیاز خود را در سازنده یک composer تایپ کنید.
پیوست کردن یک composer به چندین نمایش
میتوانید با ارسال آرایهای از نماها بهعنوان اولین آرگومان به متد، یک
View composer را به چندین نما به طور همزمان متصل کنید
composer
:
use App\Views\Composers\MultiComposer; View::composer( ['profile', 'dashboard'], MultiComposer::class);
این
composer
متد همچنین
*
کاراکتر را بهعنوان عام میپذیرد و به شما امکان میدهد یک composer را به
همه نماها متصل کنید:
View::composer('*', function ($view) { //});
مشاهده سازندگان
نمایش "سازندگان" بسیار شبیه به نمایش composerان است. با این حال، آنها
بلافاصله پس از نمایش نمونه اجرا می شوند، به جای اینکه منتظر بمانند تا نمایش در شرف ارائه شود. برای ثبت یک
View Creator از
creator
روش زیر استفاده کنید:
use App\View\Creators\ProfileCreator;use Illuminate\Support\Facades\View; View::creator('profile', ProfileCreator::class);
بهینه سازی نماها
بهطور پیشفرض، نماهای قالب Blade در صورت تقاضا کامپایل میشوند. هنگامی که درخواستی اجرا می شود که یک View را ارائه می دهد، لاراول تعیین می کند که آیا نسخه کامپایل شده ای از view وجود دارد یا خیر. اگر فایل وجود داشته باشد، لاراول تعیین می کند که آیا نمای کامپایل نشده اخیراً نسبت به نمای کامپایل شده اصلاح شده است یا خیر. اگر نمای کامپایل شده وجود نداشته باشد یا نمای کامپایل نشده اصلاح شده باشد، لاراول نمای را دوباره کامپایل می کند.
کامپایل کردن نماها در طول درخواست ممکن است تأثیر منفی کوچکی بر عملکرد
داشته باشد، بنابراین لاراول
view:cache
دستور Artisan را برای از پیش کامپایل کردن همه نماهای استفاده شده توسط
برنامه شما ارائه می دهد. برای افزایش عملکرد، ممکن است بخواهید این دستور را به عنوان بخشی از فرآیند استقرار
خود اجرا کنید:
php artisan view:cache
می توانید از
view:clear
دستور برای پاک کردن کش view استفاده کنید:
php artisan view:clear