بازدیدها
ایجاد نماها
به دنبال اطلاعات بیشتر در مورد نحوه نوشتن الگوهای Blade هستید؟ برای شروع، مستندات کامل Blade را بررسی کنید.
نماها حاوی HTML ارائه شده توسط برنامه شما هستند و منطق کنترلر/برنامه شما
را از منطق ارائه شما جدا می کنند.
نماها در
resources/views
فهرست ذخیره می شوند.
یک نمای ساده ممکن است چیزی شبیه به این باشد:
<!-- 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']);});
همانطور که می بینید، اولین آرگومان ارسال شده به
view
helper مربوط به نام فایل view در
resources/views
دایرکتوری است.
آرگومان دوم آرایه ای از داده ها است که باید در دسترس view قرار گیرد.
در این حالت، متغیری را ارسال می کنیم که با استفاده از
دستور Blade
name
در نمای نمایش داده می شود
.
نماها همچنین ممکن است در زیر شاخه های دایرکتوری تودرتو باشند
resources/views
.
نماد "نقطه" ممکن است برای ارجاع به نماهای تودرتو استفاده شود.
به عنوان مثال، اگر نمای شما در ذخیره شده است
resources/views/admin/profile.blade.php
، می توانید آن را به این صورت ارجاع دهید:
return view('admin.profile', $data);
نمایش نام دایرکتوری نباید حاوی
.
کاراکتر باشد.
تعیین اینکه آیا دیدگاه وجود دارد
اگر نیاز به تعیین وجود نما دارید، می توانید از
View
نما استفاده کنید.
اگر view وجود داشته باشد
متد
exists
برمی گردد :
true
use Illuminate\Support\Facades\View; if (View::exists('emails.customer')) { //}
ایجاد اولین نمای موجود
با استفاده از
first
روش، می توانید اولین نمای موجود در یک آرایه معین از نماها را ایجاد کنید.
اگر برنامه یا بسته شما اجازه می دهد تا نماها سفارشی یا بازنویسی شوند،
مفید است:
return view()->first(['custom.admin', 'admin'], $data);
همچنین می توانید این روش را از طریق
View
نما
فراخوانی کنید :
use Illuminate\Support\Facades\View; return View::first(['custom.admin', 'admin'], $data);
انتقال داده به نماها
همانطور که در مثال های قبلی دیدید، می توانید آرایه ای از داده ها را به view ها ارسال کنید:
return view('greetings', ['name' => 'Victoria']);
هنگام انتقال اطلاعات به این روش، داده ها باید یک آرایه با جفت کلید /
مقدار باشد.
در داخل نمای خود، سپس می توانید با استفاده از کلید مربوطه به هر مقدار،
مانند
<?php echo $key; ?>
.
به عنوان جایگزینی برای ارسال یک آرایه کامل از داده ها به
view
تابع کمکی، می توانید از
with
روشی برای افزودن تک تک داده ها به نمای استفاده کنید:
return view('greeting')->with('name', 'Victoria');
اشتراک گذاری داده ها با همه نماها
گاهی اوقات، ممکن است لازم باشد بخشی از داده را با همه نماهایی که توسط
برنامه شما ارائه می شود به اشتراک بگذارید.
می توانید این کار را با استفاده از روش نمای نمای انجام دهید
share
.
share
معمولاً باید با روش ارائهدهنده خدمات
تماس برقرار کنید
boot
.
شما آزاد هستید که آنها را به آنها اضافه کنید
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 composers را در یک
ارائه دهنده خدمات
ثبت کنیم .
ما از
View
نما برای دسترسی به اجرای قرارداد اساسی استفاده خواهیم کرد
Illuminate\Contracts\View\Factory
.
به یاد داشته باشید، لاراول یک دایرکتوری پیشفرض برای View Composers
ندارد.
شما آزاد هستید که آنها را هر طور که می خواهید سازماندهی کنید.
به عنوان مثال، می توانید یک
app/Http/View/Composers
دایرکتوری ایجاد کنید:
<?php namespace App\Providers; 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', 'App\Http\View\Composers\ProfileComposer' ); // Using Closure based composers... View::composer('dashboard', function ($view) { // }); }}
به یاد داشته باشید، اگر یک ارائهدهنده سرویس جدید ایجاد میکنید که شامل ثبتهای view composer شما باشد، باید ارائهدهنده سرویس را به
providers
آرایه درconfig/app.php
فایل پیکربندی اضافه کنید.
اکنون که composer را ثبت کرده ایم، هر بار که
view در حال رندر شدن است،
ProfileComposer@compose
متد اجرا می شود .
profile
بنابراین، بیایید کلاس composer را تعریف کنیم:
<?php namespace App\Http\View\Composers; use App\Repositories\UserRepository;use Illuminate\View\View; class ProfileComposer{ /** * The user repository implementation. * * @var UserRepository */ protected $users; /** * Create a new profile composer. * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { // Dependencies automatically resolved by service container... $this->users = $users; } /** * Bind data to the view. * * @param View $view * @return void */ public function compose(View $view) { $view->with('count', $this->users->count()); }}
درست قبل از رندر شدن نما، متد composer
compose
با
Illuminate\View\View
نمونه فراخوانی می شود.
می توانید از این
with
روش برای اتصال داده ها به نما استفاده کنید.
همه نویسندگان view از طریق کانتینر سرویس حل میشوند ، بنابراین میتوانید وابستگیهایی را که در سازنده یک composer نیاز دارید تایپ کنید.
پیوست کردن یک composer به چندین نمایش
میتوانید با ارسال آرایهای از نماها بهعنوان اولین آرگومان به متد، یک
View composer را به چندین نما به طور همزمان متصل کنید
composer
:
View::composer( ['profile', 'dashboard'], 'App\Http\View\Composers\MyViewComposer');
این
composer
متد همچنین
*
کاراکتر را بهعنوان عام میپذیرد و به شما امکان میدهد یک composer را به
همه نماها متصل کنید:
View::composer('*', function ($view) { //});
مشاهده سازندگان
سازندگان
View
بسیار شبیه به composerان مشاهده هستند.
با این حال، آنها بلافاصله پس از نمایش نمونه اجرا می شوند، به جای اینکه
منتظر بمانند تا نمایش در شرف ارائه شود.
برای ثبت یک View Creator از
creator
روش زیر استفاده کنید:
View::creator('profile', 'App\Http\View\Creators\ProfileCreator');
بهینه سازی نماها
بهطور پیشفرض، نماها در صورت تقاضا کامپایل میشوند. هنگامی که درخواستی اجرا می شود که یک View را ارائه می دهد، لاراول تعیین می کند که آیا نسخه کامپایل شده ای از view وجود دارد یا خیر. اگر فایل وجود داشته باشد، لاراول تعیین می کند که آیا نمای کامپایل نشده اخیراً نسبت به نمای کامپایل شده اصلاح شده است یا خیر. اگر نمای کامپایل شده وجود نداشته باشد یا نمای کامپایل نشده اصلاح شده باشد، لاراول نمای را دوباره کامپایل می کند.
کامپایل کردن نماها در طول درخواست تأثیر منفی بر عملکرد دارد، بنابراین
لاراول
view:cache
دستور Artisan را برای از پیش کامپایل کردن همه نماهای استفاده شده توسط
برنامه شما ارائه می دهد.
برای افزایش عملکرد، ممکن است بخواهید این دستور را به عنوان بخشی از فرآیند
استقرار خود اجرا کنید:
php artisan view:cache
می توانید از
view:clear
دستور برای پاک کردن کش view استفاده کنید:
php artisan view:clear