آموزش لاراول: بررسی کامل View ها در لاراول
آموزش لاراول (Laravel) زمان مطالعه: 5 دقیقه تاریخ انتشار: 1 سال قبل

آموزش لاراول: بررسی کامل View ها در لاراول

در قسمت قبل، Response ها در لاراول را بررسی کردیم و در این قسمت از آموزش لاراول به بررسی View ها در لاراول می پردازیم. در هنگام استفاده و پیاده سازی پروژه های خود با لاراول شما باید کار با View در لاراول را به خوبی بلد باشید و آشنایی کاملی با آن داشته باشید در ادامه همراه هیرود باشید تا بهتون بگیم View لاراول چیست؟

 

View لاراول چیست؟

ویوها در لاراول شامل کدهای HTML برنامه شما هستند. View منطق Controller برنامه شما را از منطق آنچه قرار است که در فرانت اند به کاربر نمایش داده شود را از هم جدا می کند. View ها در Laravel در مسیر resources/views ایجاد می شوند.

 

ساده ترین View ممکن در لاراول

کد زیر در واقع یک ویو ساده در لاراول را نشان می دهد.

<!-- View stored in resources/views/greeting.blade.php -->

<html>
    <body>
        <h1>Hello, $name</h1>
    </body>
</html>

خب پس از ایجاد View قطعا ما باید آن را نمایش دهیم که با استفاده از return view در فایل Route لاراول می توانیم این کار را انجام دهیم.

Route::get('/', function () {
    return view('greeting', ['name' => 'James']);
});

همانطور که مشاهده می کنید ما با استفاده از view helper در پارامتر اول نام ویو و در پارامتر دوم در قالب یک آرایه می توانیم مقداری را به عنوان مثال name را به آن ویو ارسال کنیم. سپس ما با استفاده از Blade Syntax که لاراول در View ها از آن استفاده می کند و در مقاله مجزا به بررسی آن خواهیم پداخت می توانیم آن متغییر را به صورت $name در View نمایش دهیم.

 

همچنین برای فراخوانی View های تو در تو در لاراول می توانیم با استفاده از (دات) مانند مثال زیر عمل کنیم.

return view('admin.profile', $data);

 

بررسی وجود یک View در لاراول

اگر نیاز دارید تا وجود یک View را چک کنید می توانید از facade View در لاراول استفاده کنید که در صورت وجود true بازگشت داده می شود.

use Illuminate\Support\Facades\View;

if (View::exists('emails.customer')) {
    //
}

 

ارسال داده به View در لاراول

همانطور که پیش تر گفتیم می توانید به صورت زیر مجموعه از داده ها را به ویو ارسال کنید.

return view('greetings', ['name' => 'Victoria']);

همچنین این کار را میتوانید با متد with انجام دهید و داده ها را جداگانه ارسال کنید.

return view('greeting')->with('name', 'Victoria');

 

اشتراک گذاری داده بین چند View در لاراول

گاهی اوقات شاید لازم باشد داده ای رابی تمام ویوها یا چند ویو موجو در برنامه لاراول خود به اشتراک بگذارید. برای این کار ابتدا یک Service Provider ساخته و در متد boot آن می توانیم با استفاده از facade View این کار مانند مثال زیر انجام دهیم.

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) {
            //
        });
    }
}

شما می توانید این کار در Closure در همان service provider انجام دهید یا یک کلاس Composer مانند ProfileComposer ایجاد کنید و آن را فراخوانی کنید. در ادامه ProfileComposer را بررسی می کنیم. اما در حالت Closure مشاهده می کنید که در یک function می توانید دیتا ارسالی خود به ویو dashboard را مشخص کنید.

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 اینگونه است که هر وقت که ویو Profile لود می وشد، متد compose اجرا شده و دیتا تعریف شده را به ویو profile ارسال می کند. در constructor هم می توانید مقدار ورودی به ProfileComposer را مقداردهی کنید.

 

اگر قصد ارسال دیتا به تمام ویوهای پروژه خود را دارید باید از (*) استفاده کنید.

View::composer('*', function ($view) {
    //
});

 

بهینه سازی View ها در لاراول

لاراول برای نمایش view ها آنها را کامپایل می کند و در پوشه ای مجزا نگهداری می کند تا زمانی که یک View فراخوانی شود و آن را نمایش دهد. زمانی که یک ویو درخواست می شود اگر نسخه کامپایل شده آن وجود داشته باشد و اصلاح نشده باشد همان ار نمایش می دهد اما اگر نسخه کامپایل شده وجود نداشته باشد یا اصلاح شده باشد مجدد آن را کامپایل می کند.

روند کامپایل در هنگام اجرای یک درخواست ممکن است باعث افت سرعت شود به همین دلیل میتوانید با استفاده از دستور view:cache تمام ویوها را یک بار کامپایل کنید تا در هنگام اجرای درخواست نیاز به کامپایل نباشد.

php artisan view:cache

همچنین اگر قصد دارید تمام View های کامپایل شده در لاراول حذف کنید تا لاراول مجدد آنها را درهنگام اجرای درخواست کامپایل کنید می توانید از دستور view:clear استفاده کنید.

php artisan view:clear

 

ممنون که تا پایان این مقاله همراه ما بودید برای یادگیری لاراول سایر آموزش ها و مقالات آموزش برنامه نویسی هیرود را از دست ندهید.

 

امتیاز به این مقاله فراموش نشه
میانگین امتیاز 5 از 5 ، کل امتیازات: 1
امیر اشرفی
نویسنده: امیر اشرفی

امیر اشرفی هستم مدیر و بنیان گذار آکادمی هیرود، حدود 10 سالی میشه که در حوزه برنامه نویسی و توسعه وب و موبایل فعالیت میکنم و تونستم تجربه خوبی در این حوزه بدست بیارم. یکی از علاقه هام انتقال تجربه هایی که در اختیار دارم به دیگرانه و باعث میشه حالم خوب بشه و اشتیاق یادگیریم افزایش پیداکنه، در واقع هیرود نتیجه حال خوبیامه :)

دوره های قهرمانی پیشنهادی

اولین قدم برنامه نویسی

اولین قدم برنامه نویسی

برنامه نویسی قطعا می تواند انتخاب مناسب ، پرچالشی و بروزی برای شغل آینده شما باشد. اگر حرفه و آموزش...

سبد خرید

سبد خرید شما خالی است.

پیش به سوی قهرمانی