آموزش پکیج Laravel form builder

علی حسین شهابی

1395/8/16

نظر0

سلام خدمت دوستان لاراولی

امروز میخوام یه معرفی یک پکیج بپردازم.

پکیج Laravel form builder همانطور که از نام اش هم میشه حدس زد پکیجی هست برای ساخت فرم به صورت داینامیک  در فریم ورک لاراول و به جرات میشه گفت یکی از form builder های خیلی خوبه لاراول  است .

برای دیدن گیت هاب این پکیج اینجا کلیک کنید .

برای دیدن داکیومنت های اصلی این پکیج اینجا کلیک کنید .

خب بریم سراغ  آموزش اون.

برای نصب پکیج مانند سایر پکیج ها از کامپوزر استفاده می کنیم .

خط زیر را  به فایل composer.json در بخش require  اضافه نمایید و سپس با استفاده از فرمان composer update پکیج جدید را به مجموع پکیج های قبلی خودتون اضافه نمایید.

 "kris/laravel-form-builder": "1.6.*"

بعد از نصب پکیج , خطوط زیر را در فایل config/app.php اضافه نمایید .

ابتدا Service provider اش رو اضافه می کنیم :

<?php
return [
    // ...

    'providers' => [
        // ...
        'Kris\LaravelFormBuilder\FormBuilderServiceProvider'
    ]
];

حالا Facadeاش رو اضافه می کنیم  :

<?php
return [
    // ...

    'aliases' => [
        // ...
        'FormBuilder' => 'Kris\LaravelFormBuilder\Facades\FormBuilder'
    ]
];

ه نکته مهم :‌ پکیج Laravel form builder از کلاس های HTML و FORM استفاده می کند  در نتیجه اگر قبلن پکیج illuminate/html را نصب نکرده باشید , این پکیج هم به صورت اتوماتیک همراه با پکیج Laravel form builder برای شما نصب می شود. به همین دلیل فقط شما کافی است aliases , Service Providers  های پکیج  illuminate/html را به فایل config/app.php اضافه کنید . یعنی خطوط زیر را :

ابتدا Service Providers اش :

Collective\Html\HtmlServiceProvider::class

و این هم مربوط به aliases :

'Form'        => Collective\Html\FormFacade::class ,
        'Datatables'  => yajra\Datatables\Datatables::class ,

خب مراحل نصب پکیح Laravel form builder به پایان رسید حالا باید بریرم سراغ استفاده ازش :

برای ساخت فرم ۴ مرحله زیر را باید انجام دهیم :

  1. ابتدا یک کلاس درست کنیم که از کلاس Form ارث بری کرده باشد و همچنین شامل متد buildForm باشد .
  2. داخل متد buildForm فیلدهای فرم امون رو تعریف می کنیم .
  3. داخل کنترلر مورد نظرمون این فرمی که ساختیم را صدا زده و به صورت یک متغیر به view دلخواهمون ارسالش می کنیم تا آنجا نمایش یابد .
  4. فرم ساخته شده را در view نمایش دهیم .

خب برای ساخت کلاس می توانید از فرمان زیر استفاده کنیم :

php artisan make:form Forms/SongForm --fields="name:text, lyrics:textarea, publish:checkbox"

این فرمان کلاس app/Forms/SongForm.php را ساخته و داخل این کلاس متد buildForm را ایجاد کرده و همچنین داخل این متد , اون ۳ فیلدی که تعیین کردیم را مقدار دهی می کند  :

<?php namespace App\Forms;

use Kris\LaravelFormBuilder\Form;

class SongForm extends Form
{
    public function buildForm()
    {
        $this
            ->add('name', 'text')
            ->add('lyrics', 'textarea')
            ->add('publish', 'checkbox');
    }
}

در مثال بالا تعیین شده که داخل فرم ما باید ۳ فیلد باشد ‌ :‌

  1. فیلدی با نام name که از نوع تکس باکس است .
  2. فیلدی  به نام lyrics که از نوع textarea  است .
  3. فیلدی با نام publish که از نوع checkbox است .

اگر بخواهیم کلاسی که برای ما ایجاد می کند شامل فیلد خاصی نباشد و بعدا خودمان فیلدهای آن را تعیین نماییم از فرمان زیر استفاده می کنیم :

php artisan make:form Forms/PostForm

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

<?php namespace App\Forms;

use Kris\LaravelFormBuilder\Form;

class PostForm extends Form
{
    public function buildForm()
    {
        // Add fields here...
    }
}

در این مرحله  کلاس و فیلدهای لازم در فرم امون را ساختیم  . حالا نوبت به آن می رسد که از فرم امان را داخل یک متغیر ریخته و به view ارسال کنیم . برای این کار و ایجاد فرم از متد create آبجکته FormBuilder استفاده می کنیم .

<?php namespace App/Http/Controllers;

use Illuminate\Routing\Controller as BaseController;
use Kris\LaravelFormBuilder\FormBuilder;

class SongsController extends BaseController {

    public function create(FormBuilder $formBuilder)
    {
        $form = $formBuilder->create('App\Forms\SongForm', [
            'method' => 'POST',
            'url' => route('song.store')
        ]);

        return view('song.create', compact('form'));
    }
}
  • در خط ۱۱ با استفاده از متد create کلاسه فرمی که ساخته بودیم را صدا می زنیم و در خطوط بعدی مشخص کردیم که فرم ما باید متد اش از نوع post باد  action اش فلاین url باشد .

حالا نوبت به نمایش فرم ساخته شده می رسد . همانطور که مشاهده کردین این فرم را داخل متغیر form$ ریختیم و آن را به view ای با نام create ارسال کردیم .

برای نمایش فرم ارسالی باید از فرمان زیر استفاده کنیم :

 {!! form($form) !!}

این فرمان را در create.blade.php می نویسم تا فرم ما به همراه فیلدهایش نمایش یابد .

کد خروجی که این فرم برای ما تولید می کند به صورت زیر خواهد بود :

خب این از مراحل ساخت فرم مورد نظرمون و ارسال اون به view و سپس نمایش فرم .

Commands

حالا یه نگاه هم بندازیم به فرمان ساخت  کلاس فرم که در ابتدای آموزش معرفی کردیم و گفتیم با اون می توانیم کلاسی بسازیم شامل متد buildForm .

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

مثال  :

php artisan make:form Http/Forms/LoginForm

فرمان بالا کلاس LoginForm را برای ما ایجاد می نماید بدون هیچ فیلد خاصی .

خروجی :

<?php namespace App\Http\Forms;

use Kris\LaravelFormBuilder\Form;

class LoginForm extends Form
{
    public function buildForm()
    {
        // Add fields here...
    }
}

مثال  :

php artisan form:make Http/Forms/LoginForm --fields="username:text, password:password"

فرمان بالا کلاس LoginForm را به همراه ۲ فیلد به نام های username و password برای ما ایجاد می کند .

پارامتر  fields– برای تعیین فیلدهای مورد نیاز است .

خروجی :

<?php namespace App\Http\Forms;

use Kris\LaravelFormBuilder\Form;

class LoginForm extends Form
{
    public function buildForm()
    {
        $this
            ->add('username', 'text')
            ->add('password', 'password');
    }
}

 

مثال ‌:

php artisan make:form MyLoginForm --path="src/Auth/LoginForm"

فرمان بالا کلاس LoginForm را در شاخه ی  /var/www/laravel-project/src/Auth/LoginForm/MyLoginForm.php ایجاد می نماید .

path– برای تعیین مسیر ساخت کلاس فرم ما می باشد  .

خروجی :

<?php namespace src\Auth\LoginForm;

use Kris\LaravelFormBuilder\Form;

class MyLoginForm extends Form
{
    public function buildForm()
    {
        // Add fields here...
    }
}

namespace ساخته شده برای کلاس ها در واقع از روی همین  محل ساخت کلاس ها برداشته شده و شما می توانید آن را با پارامتر namespace– تغییر دهید .

مثال :

php artisan make:form MyLoginForm --path="src/Auth/LoginForm" --namespace="App\Auth\LoginForm"

فرمان بالا کلاس LoginForm را در شاخه /var/www/laravel-project/src/Auth/LoginForm/MyLoginForm.php ساخه و namespace  آن را App\Auth\LoginForm قرار می دهد  .

خروجی :

<?php namespace App\Auth\LoginForm;

use Kris\LaravelFormBuilder\Form;

class MyLoginForm extends Form
{
    public function buildForm()
    {
        // Add fields here...
    }
}

 

امیدوارم تا  حدی با این پکیج لاراول آشنا شده باشین .

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

خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.

 

 

 

 

 

 

 

 

 

 

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

1 نظر

( 1395/9/6 )علی

با سلام اگه بخوایم یه سری استایل و یا فیلدهای خاص به فرممون اضافه کنیم چطور قابل انجامه ؟ بنظر یکم گیج کننده می آید استفاده از کدهای مستقیم فرم قابل درک تره ... البته نظر منه :) با تشکر

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.