نسخه:

بازدیدها

ایجاد نماها

به دنبال اطلاعات بیشتر در مورد نحوه نوشتن الگوهای 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