در حال بارگزاری ...

لاراول | معرفی پکیج laravelcollective

توسط سعید هوشیار
آخرین به روز رسانی جمعه 16 خرداد 1399

laravelcollective یکی از برترین پکیج‌های فریم ورک لاراول به شمار می‌رود که به افزایش سرعت توسعه فرم‌ها و ایجاد اجزای فرم کمک به سزایی می‌کند. این پکیج در چارچوب قوانین لا

laravelcollective یکی از برترین پکیج‌های فریم ورک لاراول به شمار می‌رود که به افزایش سرعت توسعه فرم‌ها و ایجاد اجزای فرم کمک به سزایی می‌کند. این پکیج در چارچوب قوانین لاراول ایجاد شده و بدون هیچ مشکلی با این فریم ورک عمل کرده و با آن همخوانی دارد.


از مهترین ویژگی های پکیج laravelcollective می توان به موارد زیر اشاره کرد :

  •  به راحتی می‌توان اجزای فرم را با یک استاندارد مشخص ایجاد کرد.
  • افزودن مدل به فرم، این کار باعث می‌شود زمانی که داده‌ها را ذخیره کردید، این داده‌ها به صورت خودکار در فیلدهای مورد نظر نمایش داده شوند و این امر یکی از دردسرهای ایجاد فرم را کم کرده و  نیازی به مقداردهی دستی این فیلدها نمی‌باشد.
  •  اگر دقت کرده باشید به حالت عادی هنگام پست شدن فرم و بازگشت آن به صفحه قبل که ممکن است به هر دلیلی انجام گیرد، داده‌ها در فیلدهای موردنظر پاک می‌شوند و باید مجدداً آن‌ها را وارد نماییم. اما با استفاده از laravelcollective این مشکل هم به صورت خودکار حل خواهد شد.
  •  افزودن فیلد csrf token به فرم به صورت خودکار.

 بیشتر بخوانید:

پکیج Laravel Excel 3.0 

Laravel Collections و استفاده از متد "when " 

 نصب laravelcollective

توجه کنید که این آموزش مربوط به آخرین نسخه این پکیج است و ورژن لاراول شما باید نسخه 5 و بالاتر از آن باشد.

برای نصب این پکیج توسط composer دستور زیر را وارد کنید.

composer require "laravelcollective/html":"^5.4.0"

در مرحله بعد facade , provider این پکیج را به فایل config/app.php اضافه کنید.

'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,
    // ...
  ],

  'aliases' => [
    // ...
      'Form' => Collective\Html\FormFacade::class,
      'Html' => Collective\Html\HtmlFacade::class,
    // ...
  ],

ایجاد فرم

برای ایجاد یک فرم معمولاً از روش زیر استفاده می‌کنیم :

{!! Form::open(['url' => 'foo/bar']) !!}
    //
{!! Form::close() !!}

در حالت عادی متد این فرم‌ها POST هستند. برای تغییر متد فرم می‌توان مانند مثال زیر عمل کرد:

echo Form::open(['url' => 'foo/bar', 'method' => 'put'])

 

توجه داشته باشید که فرم‌های HTML فقط از متدهای POST,GET   پشتیبانی می‌کنند و برای متدهای PUT,DELETE باید از فیلد مخفی به نام _method برای ارسال نوع متد استفاده کنید.
 

  همچنین، می‌توانید نقطه ارسال دادهای فرم را با استفاده از route  و action  مشخص کنید:

echo Form::open(['route' => 'route.name'])
echo Form::open(['action' => 'Controller@method'])

 همچنین، می‌توانید مانند مثال زیر برای ارسال پارامتر اقدام نمایید .

echo Form::open(['route' => ['route.name', $user->id]])
echo Form::open(['action' => ['Controller@method', $user->id]])

اگر بخواهید توسط فرم فایلی را ارسال کنید، یادتان باشد که گزینه file را فعال کنید.

echo Form::open(['url' => 'foo/bar', 'files' => true])

محافظت توسط CSRF

لاراول برای جلوگیری از حملات و جعلی بودن آن‌ها از قابلیتی به نام csrf token استفاده می‌کند. این توکن‌ها به صورت رندم ایجاد شده و در session کاربر ذخیره می‌شوند. زمانی که با استفاده از laravelcollective فرمی ایجاد می‌کنید، فیلد csrf به صورت خودکار ساخته می‌شود، ولی اگر به هر دلیل این فیلد ایجاد نشد، می‌توانید با استفاده از دستور زیر این فیلد را ایجاد کنید.

 مقاله مرتبط

حفاظت CSRF در لاراول چگونه است؟

echo Form::token();

 متصل (bind) کردن مدل به Form

برای اتصال مدل به فرم باید برای ایجاد فرم از متد Form::model استفاده کنیم :

echo Form::model($user, ['route' => ['user.update', $user->id]])

در حال حاضر، زمانی که یک عنصر فرم تولید می‌کنید، مانند یک ورودی متن، مقدار مدل مطابق با نام فیلد به صورت خودکار به عنوان مقدار فیلد جایگذاری می‌شود. برای مثال، برای ورودی متن به نام Email ، ویژگی Email کاربر به عنوان مقدار تعیین می‌شود. با این حال، اگر یک آیتم در داده‌های فلش session مطابق با نام ورودی وجود داشته باشد، بر روی مقدار مدل اولویت خواهد داشت. بنابراین، اولویت به شرح زیر است :

  1. Session Flash Data (Old Input)
  2. Explicitly Passed Value
  3. Model Attribute Data

این موضوع به شما امکان می‌دهد تا سریعاً فرم‌هایی را ایجاد کنید که نه تنها به مقادیر مدل پیوند دارند، حتی اگر خطای اعتبارسنجی روی سرور وجود داشته باشد، به راحتی دوباره مقدار گذاری شوند!

 
زمانی که از Form::model استفاده می‌کنید، حتما در پایان Form::close را قرار دهید.
 

استفاده از  Model Accessors در فرم ها

همانطور که می‌دانید، توسط Model Accessors می‌توان قبل از دریافت ویژگی‌های یک مدل آن‌ها را دستکاری کنیم.

برای تعریف دسترسی به فرم، یک متد formFooAttribute را در مدل خود ایجاد کنید که در آن Foo نام ستونی است که می‌خواهید به آن دسترسی پیدا کنید. در این مثال، یک accessor برای ویژگی date_of_birth تعریف می‌کنیم. accessor به صورت خودکار توسط فرم مقدار گذاری می‌شود، اما در نظر داشته باشید که این کار فقط با استفاده از Form::model امکان‌پذیر است.

توجه داشته باشید که باید FormAccessible trait را به مدل خود اضافه کنید.

<?php

namespace App;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Collective\Html\Eloquent\FormAccessible;

class User extends Model
{
    use FormAccessible;     

    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getDateOfBirthAttribute($value)
    {
        return Carbon::parse($value)->format('m/d/Y');
    }

    /**
     * Get the user's first name for forms.
     *
     * @param  string  $value
     * @return string
     */
    public function formDateOfBirthAttribute($value)
    {
        return Carbon::parse($value)->format('Y-m-d');
    }
}

برچسب ها یا Labels

echo Form::label('email', 'E-Mail Address');

مشخص کردن ویژگی های HTML

echo Form::label('email', 'E-Mail Address', ['class' => 'awesome']);
 پس از ایجاد یک برچسب، هر عنصر فرم که با نامی مطابق با نام برچسب ایجاد می‌کند، به صورت خودکار یک شناسه مطابق با نام برچسب نیز دریافت می‌کند.

ایجاد ورودی های Text, Text Area, Password & Hidden Fields

ایجاد ورودی Text

echo Form::text('username');

مشخص کردن مقدار پیش‌فرض

echo Form::text('email', 'example@gmail.com');

ایجاد ورودی Password

echo Form::password('password', ['class' => 'awesome']);

ایجاد فیلدهای دیگر

echo Form::email($name, $value = null, $attributes = []);
echo Form::file($name, $attributes = []);

ایجاد ورودی های Checkbox , Radio

echo Form::checkbox('name', 'value');
echo Form::radio('name', 'value');

ایجاد ورودی های Checkbox , Radio که انتخاب شده اند

echo Form::checkbox('name', 'value', true);
echo Form::radio('name', 'value', true);

ایجاد ورودی Number

echo Form::number('name', 'value');

ایجاد ورودی Date

echo Form::date('name', \Carbon\Carbon::now());

ایجاد ورودی File

echo Form::file('image');
 
برای استفاده از ورودی File باید ویژگی file را به فرمی را که باز کرده‌اید اضافه کنید.
 

ایجاد لیست کشویی یا  Drop-Down List

echo Form::select('size', ['L' => 'Large', 'S' => 'Small']);

ایجاد لیست کشویی همراه با مقدار انتخاب شده

echo Form::select('size', ['L' => 'Large', 'S' => 'Small'], 'S');

ایجاد لیست کشویی همراه با یک placeholder با مقدار خالی

echo Form::select('size', ['L' => 'Large', 'S' => 'Small'], null, ['placeholder' => 'Pick a size...']);

ایجاد لیست کشویی همرا با گروه بندی

echo Form::select('animal',[
    'Cats' => ['leopard' => 'Leopard'],
    'Dogs' => ['spaniel' => 'Spaniel'],
]);

ایجاد لیست کشویی همراه با یک رنج مشخص

echo Form::selectRange('number', 10, 20);

ایجاد لیست کشویی برای ماه های سال

echo Form::selectMonth('month');

ایجاد دکمه Submit

echo Form::submit('Click Me!');

ایجاد اجزای فرم به صورت سفارشی با استفاده از macro ها

می‌توانید برای فرم‌های laravelcollective به راحتی اجزای جدید و سفارشی با استفاده از macro‌ها ایجاد کنید. ساخت این اجزا به شکل زیر است :

Form::macro('myField', function()
{
    return '<input type="awesome">';
});

به راحتی یک فیلد سفارشی به laravelcollective اضافه کردید، حالا برای استفاده از آن به شکل زیر عمل کنید.

echo Form::myField();

کامپوننت های سفارشی

کامپوننت های سفارشی مانند macroها عمل می‌کنند، با این تفاوت که باید به کامپوننت‌ها برای ایجاد اجزا یک .blade معرفی کنیم. این قابلیت بسیار خوب باعث افزایش سرعت ایجاد فرم‌ها می‌شود.

برای معرفی یک component باید از متد boot در service provider ها استفاده کرد.

Form::component('bsText', 'components.form.text', ['name', 'value', 'attributes']);

با توجه به کد بالا و مقدار components.form.text باید متوجه شد که باید در مسیر /form/components یک بلید با نام "text" ایجاد کنیم و مقادیر زیر را در آن وارد کنیم.

// resources/views/components/form/text.blade.php
<div class="form-group">
    {{ Form::label($name, null, ['class' => 'control-label']) }}
    {{ Form::text($name, $value, array_merge(['class' => 'form-control'], $attributes)) }}
</div>

حالا می‌توانید با استفاده از دستور زیر از کامپوننت خود استفاده کنید.

{{ Form::bsText('first_name') }}

و خروجی HTML ما به شکل زیر است:

<div class="form-group">
    <label for="first_name">First Name</label>
    <input type="text" name="first_name" value="" class="form-control">
</div>

 بیشتر بخوانید:

آموزش پایه لاراول ۵,۵

آموزش CSS

آموزش HTML مقدماتی

امیدوارم از این پکیج در ساخت برنامه‌های تحت وب خود استفاده کنید و این آموزش برای شما مفید واقع شود. برای آشنایی با پکیج‌های لاراول با کتابخانه آنلاین لیداوب همراه باشید.

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
سورس خرید و فروش ارزهای دیجیتال
ثبت امتیاز
0.8 (4 رای)

   لطفا صبر کنید ...