
توی دوره رایگان PHP، هر چیزی که برای حرفهای شدن نیاز داری رو یاد میگیری! از مفاهیم پایه تا پیشرفته، همراه با یه پروژه واقعی برای ساخت یه سایت مثل آپارات.
مشاهده بیشتر
توی این دوره با هم یه وبسایت خبری واقعی رو از صفر میسازیم! از طراحی دیتابیس و احراز هویت تا ساخت API و یه پنل مدیریت حرفهای، همه رو یاد میگیریم و آماده پروژههای واقعی میشی!
مشاهده بیشترمشخصات مقاله
آموزش برنامه ی Task list در Laravel
نوشتن یک برنامه ی ساده ی نمایش لیست کارها با Laravel (برنامه ی Task list)
فهرست محتوا:
- مقدمه
- نصب
-
آماده سازی پایگاه داده
- Migration پایگاه داده
- مدل های Eloquent
-
Routing (آدرس دهی)
- اضافه کردن چند route به اپلیکیشن
- بازیابی و نمایش یک view
-
ساخت layout (طرح های کلی) و view های برنامه
- تعریف layout اپلیکیشن
- ایجاد view فرزند
-
اضافه کردن task های جدید به لیست
- Validation (اعتبارسنجی)
- ایجاد Task
- به نمایش گذاشتن task های جاری
-
حذف کردن Task
- اضافه کردن دکمه ی Delete به برنامه
- حذف کردن task جاری از لیست
نصب
مقاله ی حاضر یک مقدمه ی ساده در خصوص چارچوب نرم افزاری (framework) Laravel ارائه کرده و نیز توضیحاتی در باره ی مفاهیم مطرح همچونdatabase migration، ابزار ORM Eloquent، Routing، validation، Views، قالب های (template) Blade را در اختیار شما قرار می دهد.
در این مبحث از امکانات و قابلیت های Laravel برای ساختن یک برنامه ساده ی نمایش وظایف و ردگیری کارهای روزمره استفاده می کنیم. به عبارت دیگر، قصد داریم با ابزاری که لاراول در اختیار ما قرار می دهد یک برنامه ی برای رصد کارهای انجام گرفته و کارهای انجام نشده بنویسیم.
نصب Laravel
در ابتدا می بایست framework لاراول را نصب نمایید.می توانید برای اجرای آن از ماشین مجازی Homestead یا محیط برنامه نویسی محلی دلخواهPHP خود استفاده کنید. پس از اینکه محیط توسعه محلی آماده شد، بایستی نسبت به نصب Laravel به واسطه ی Composer اقدام کنید. در زیر با استفاده از دستور create-project کامپوزر یک پروژه ی خام ایجاد کنیم:
1 2 | composer create-project laravel/laravel quickstart --prefer-dist <button></button> |
نصب Quickstart
در صورت تمایل می توانید کد این برنامه را دانلود کرده و آن را در ماشین محلی خود اجرا کنید. برای این منظور بایستی مخزن (repository) Git آن را کلون کرده و dependency های آن را نصب کنید:
1 2 3 4 5 | git clone https: //github.com/laravel/quickstart-basic quickstart cd quickstart composer install php artisan migrate <button></button> |
آماده سازی پایگاه داده
Migration پایگاه داده
اکنون به وسیله ی یک migration جدولی در پایگاه داده ایجاد می کنیم که task ها را در خود ذخیره کند. قابلیت migration در چارچوب نرم افزاری لاراول امکان تعریف آسان ساختار جدول و اعمال اصلاحات مربوط به آن را به واسطه ی کدهای کارآمد و بهینه ی PHP فراهم آورده است. بجای اینکه به برنامه نویسان تیم خود بگویید ستون ها را دستی به نسخه ی محلی خود از پایگاه داده اضافه کنند، می توانید آن ها را راهنمایی کنید migrationهایی را که در source control (سیستم کنترل تغییرات) قرار می دهید، اجرا کنند.
بنابراین یک جدول در پایگاه داده ایجاد می کنیم که تمامی اطلاعات (task ها یا وظایف) در آن ذخیره می شوند. برای آسان تر کردن و سرعت بخشیدن به فرایند کدنویسی در حین ساخت پروژه، می توانید از Artisan CLI استفاده کنید که کلاس های مورد نیاز را برای شما ایجاد کرده و همان طور که گفته شد پروسه ی کدنویسی را تسهیل می بخشد. برای این پروژه از دستور make:migration استفاده می کنیم که یک database migration(فایل migration) جدید برای جدول tasks ایجاد می کند:
1 2 | php artisan make:migration create_tasks_table --create=tasks <button></button> |
migration در پوشه ی database/migrations پروژه ی شما قرار خواهد گرفت. همان طور که می بینید، دستور مذکور یک ID خود افزاینده (auto-incrementing) به همراه Timestamp (برای مشخص کردن ترتیب اجرا) به فایل migration اضافه می کند. ابتدا به ویرایش این فایل و افزودن یک ستون از نوع string برای ذخیره ی اطلاعات مربوط به اسم task می پردازیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateTasksTable extends Migration { public function up() { Schema::create( 'tasks' , function (Blueprint $table ) { $table ->increments( 'id' ); $table ->string( 'name' ); $table ->timestamps(); }); } public function down() { Schema::drop( 'tasks' ); } } <button></button> |
برای اجرای migration، دستور آرتیزان migrate را صدا می زنیم. در صورت استفاده از Homestead به عنوان محیط توسعه، بایستی این دستور را از داخل ماشین مجازی فراخوانی و اجرا کنید. دلیل انجام این کار عدم دسترسی مسقیم ماشین میزبان (host machine) به پایگاه داده می باشد:
1 2 | php artisan migrate <button></button> |
دستور مزبور تمامی جداول مورد نیاز پایگاه داده را ایجاد می کند. اگر جداول پایگاه داده را با استفاده از database client دلخواه خود بررسی کنید، در آن صورت یک جدول جدید با نام tasks مشاهده می کنید که ستون های تازه ایجاد شده در پایگاه داده ی ما را دربرگرفته است. در گام بعدی به ساخت مدل های Eloquent می پردازیم.(هر ماشینی که به سیستم مدیریت پایگاه داده متصل می شود بایستی یک database client بر روی خود نصب داشته باشد.)
مدل های Eloquent
Eloquent ابزار ORM پیش فرض چارچوب نرم افزاری Laravel می باشد که با نصب آن در اختیار شما قرار داده می شود. Eloquent به شما این امکان را می دهد تا با استفاده از مدل های کارآمد و بهینه تعریف شده، داده های مورد نظر را با کم ترین زحمت ذخیره کرده و واکشی نمایید. به طور معمول، هر مدل Eloquent با یک جدول در پایگاه داده متناظر (منطبق) می باشد (هر جدول موجود در پایگاه داده دارای یک مدل است). در واقع با استفاده از مدل با جداول پایگاه داده تعامل و ارتباط بر قرار می کنیم.
بنابراین می بایست یک مدل به نام Task که با جدول tasks در پایگاه داده متناظر می باشد، ایجاد کنید. در اینجا هم می توانید از دستور Artisanبرای تولید آسان مدل استفاده کنید. برای ایجاد مدل دستور make:model را اجرا می کنیم:
php artisan make:model Task
مدل ایجاد شده در پوشه ی app اپلیکیشن شما قرار می گیرد. به طور پیش فرض کلاس مدل تهی می باشد. لزومی ندارد که صریحا به مدلEloquent اعلان کنیم دقیقا با کدام کلاس متناظر می باشد (تعلق دارد) زیرا خود مدل فرض می گیرد جدول پایگاه داده در واقع همان نسخه ی جمع اسم مدل می باشد. پس نتیجه می گیریم که مدل Task با جدول tasks در پایگاه داده که همان نسخه ی جمع اسم مدل (Task) است، متناظر می باشد. کد مربوط به مدل تهی ما بایستی مشابه نمونه ی زیر باشد:
1 2 3 4 5 6 7 8 9 10 11 | <?php namespace App; use Illuminate\Database\Eloquent\Model; class Task extends Model { // } <button></button> |
در آینده با افزودن route به اپلیکیشن بیشتر با مدل های Eloquent آشنا خواهیم شد.
Routing (آدرس دهی)
افزودن route به برنامه
حال برنامه ی ما به مرحله ای رسیده که می توان به آن route اضافه کرد. از Route برای ارجاع URL ها به کنترلر یا توابع بی نام (anonymous function) استفاده می شود که بایستی با دسترسی کاربر به صفحه ی مورد نظر اجرا شوند. به صورت پیش فرض، کلیه ی route های لاراول در فایلapp/Http/routes.php ایجاد می شوند. فایل نام برده در هر پروژه ی جدیدی که ایجاد می شود به صورت خودکار اضافه می گردد.
برای این برنامه به حداقل سه route نیاز داریم: یک route برای نمایش لیستی از تمامی کارها (task)، یک route برای افزودن کارهای جدید به لیست و در پایان یک route به منظور افزودن قابلیت حذف کارهای جاری از لیست. اکنون تمامی route ها را به فایل app/Http/routes.phpاضافه می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php use App\Task; use Illuminate\Http\Request; Route::get( '/' , function () { // }); Route::post( '/task' , function (Request $request ) { // }); Route:: delete ( '/task/{task}' , function (Task $task ) { // }); <button></button> |
چنانچه کپی Laravel شما دارای RouteServiceProvider باشد که از قبل فایل پیش فرض route ها را در web (که یک group middleware هست) اضافه می کند، در آن صورت لزومی به افزودن group به صورت دستی به فایل routes.php نیست.
بازیابی و نمایش یک View
در این مرحله به پرکردن مسیر (route) " / " می پردازیم. از این route می خواهیم یک قالب HTML را اجرا و به نمایش بگذاریم (render) که علاوه بر لیست کارهای جاری، دربردارنده ی یک فرم برای اضافه کردن کارهای (task) جدید به لیست باشد.
لازم به ذکر است که چارچوب کاری لاراول تمامی قالب های HTML خود را در پوشه ی resources/views ذخیره می کند. ما می توانیم با بهره گیری از تابع کمکی (helper) view یکی از این قالب ها را از route (مسیر/آدرس) مورد نظر برگردانده و نمایش دهیم:
1 2 3 4 | Route::get( '/' , function () { return view( 'tasks' ); }); <button></button> |
ارسال tasks به عنوان آرگومان به تابع view سبب می شود یک نمونه شی از View ایجاد شود که با قالب مقیم در فایلresources/views/tasks.blade.php متناظر می باشد. البته ابتدا می بایست این view را تعریف کنیم.
ساخت layout (طرح های کلی) و view های برنامه
برنامه ای که می خواهیم بنویسیم تنها یک view دارد که علاوه بر فهرست کارهای جاری، دربردارنده ی یک فرم برای افزودن کارهای جدید به لیست می باشد. برای اینکه بهتر بتوانید این view را تجسم کنید، در اینجا تصویری از برنامه ی تکمیل شده می بینید که یک styling ساده ی Bootstrap CSS به آن اعمال شده است:
تعریف Layout اپلیکیشن

تقریبا تمامی برنامه های تحت وب از یک layout برای تمامی صفحات خود استفاده می کنند. برای مثال، این برنامه یک نوار پیمایش در بالای صفحه دارد که اغلب در تمامی صفحات این برنامه ی تحت وب به اشتراک گذاشته می شود. Laravel امکان به اشتراک گذاری آسان این ویژگی های مشترک بین تمامی صفحات اپلیکیشن را به وسیله ی layout های Blade فراهم می آورد.
همان طور که قبلا گفته شد، تمامی view های لاراول در resources/views ذخیره می شوند. اکنون یک layout view جدید درresources/views/layouts/app.blade.php تعریف می کنیم. پسوند فایل .blade.php به فریم ورک لاراول اعلان می کند از Blade templating engine برای اجرا و نمایش (render) view استفاده کند. البته شما می توانید در صورت تمایل از template های ساده ی PHPاستفاده کنید. با این حال از آنجایی که به کمک Blade می توان قالب های کارآمد، مختصر و با سرعت بیشتری نوشت (با نصف کدنویسی که در حالت عادی برای نوشتن قالب نیاز است)، توصیه می کنیم از موتور قالب ساز Blade استفاده نمایید.
کد ویو app.blade.php بایستی مشابه نمونه ی زیر باشد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!-- resources/views/layouts/app.blade.php --> <!DOCTYPE html> <html lang= "en" > <head> <title>Laravel Quickstart - Basic</title> <!-- CSS And JavaScript --> </head> <body> <div class = "container" > <nav class = "navbar navbar-default" > <!-- Navbar Contents --> </nav> </div> @yield( 'content' ) </body> </html> <button></button> |
توجه خود را به دستور @yield('content') در layout حاضر جلب کنید. این تکه کد در واقع یک دستور (directive) از موتور قالب ساز Bladeمی باشد که تعیین می کند صفحات فرزندی که از layout جاری ارث بری می کنند (آن را extend می کنند)، در کجا می توانند محتویات خود را تزریق (inject) کنند. در بخش بعدی view فرزند را تعریف می کنیم که از این layout استفاده (ارث بری) کرده و محتویات اولیه آن را فراهم می کند (محتوای خود را در آن تزریق می کند).
تعریف View فرزند
در این بخش یک view تعریف می کنیم که علاوه بر جدولی که لیست کارهای جاری را نمایش می دهد، حاوی یک فرم برای ایجاد task جدید می باشد. این ویو را در فایل resources/views/tasks.blade.php ایجاد می کنیم.
در زیر کدهای Bootstrap CSS را نادیده گرفته و به شرح کدهای لاراول می پردازیم.
به یاد داشته باشید که منبع کامل این پروژه را می توانید از GitHub دانلود کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <!-- resources/views/tasks.blade.php --> @ extends ( 'layouts.app' ) @section( 'content' ) <!-- Bootstrap Boilerplate... --> <div class = "panel-body" > <!-- Display Validation Errors --> @ include ( 'common.errors' ) <!-- New Task Form --> <form action= "{{ url('task') }}" method= "POST" class = "form-horizontal" > {!! csrf_field() !!} <!-- Task Name --> <div class = "form-group" > <label for = "task" class = "col-sm-3 control-label" >Task</label> <div class = "col-sm-6" > <input type= "text" name= "name" id= "task-name" class = "form-control" > </div> </div> <!-- Add Task Button --> <div class = "form-group" > <div class = "col-sm-offset-3 col-sm-6" > <button type= "submit" class = "btn btn-default" > <i class = "fa fa-plus" ></i> Add Task </button> </div> </div> </form> </div> <!-- TODO: Current Tasks --> @endsection <button></button> |
شرح کد:
پیش از ادامه ی مبحث، به شرح کد این قالب می پردازیم. دستور (directive) @extends به Blade اعلان می کند که layout مورد استفاده ی برنامه ی ما، از قبل در resources/views/layouts/app.blade.php تعریف شده است. تمامی کدهایی بین دو بخش@section('content') و @endsection مشاهده می کنید، در مکان قرارگیری دستور @yield('content') ، داخل طرح کلی (layout)app.blade.php تزریق می شود.
دستور @include('common.errors') قالب مقیم در آدرس resources/views/common/errors.blade.php را بارگذاری می کند. البته این template را هنوز ایجاد نکردیم و به زودی نسبت به ایجاد آن را اقدام خواهیم کرد.
تا اینجای آموزش یک layout و view ساده برای اپلیکیشن تحت وب خود ایجاد کردیم. یادآور می شویم که view مد نظرمان را از مسیر (route) "/ " بازیابی می کنیم، بدین صورت:
1 2 3 4 | Route::get( '/' , function () { return view( 'tasks' ); }); <button></button> |
اکنون زمان آن فرا رسیده که به مسیر (route) POST /task خود کدی را اضافه کنیم که ورودی های فرم را مدیریت کرده و یک task جدید به پایگاه داده اضافه می کند.
اضافه کردن Task جدید به لیست
Validation (اعتبارسنجی)
حالا که یک فرم در view خود ایجاد کردیم، بایستی کدی را به مسیر POST /task در آدرس app/Http/routes.php اضافه کنیم که ورودی های فرم را اعتبارسنجی کرده و سپس یک task جدید ایجاد و برای نمایش در لیست اضافه کند. ابتدا به اعتبارسنجی ورودی می پردازیم.
در این فرم، فیلد name را با required مقداردهی می کنیم تا وارد کردن مقدار در این فیلد توسط کاربر الزامی گردد و سپس حداکثر تعداد کاراکترهای مجاز آن را با تنظیم مقدار مشخصه ی max بر روی 255 طوری پیکربندی می کنیم که کاربر اجازه ی وارد کردن بیش از 255 کاراکتر را نداشته باشد. در صورتی که عملیات اعتبارسنجی با شکست مواجه شد، کاربر به آدرس URL " / " (بازگشت داده) redirect می شود و همچنین ورودی قبلی به همراه خطاها در session افزوده و برای نمایش در دسترس قرار می گیرند (flash می شوند). اضافه کردن و نمایش دادن (flash) ورودی در session این امکان را برای ما فراهم می کند تا ورودی کاربر را حتی در شرایطی که خطای اعتبارسنجی رخ می دهد، نگه داشته و رصد کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Route::post( '/task' , function (Request $request ) { $validator = Validator::make( $request ->all(), [ 'name' => 'required|max:255' , ]); if ( $validator ->fails()) { return redirect( '/' ) ->withInput() ->withErrors( $validator ); } // Create The Task... }); <button></button> |
متغیر $errors
بد نیست زمان کمی را به شرح بخش ->withErrors($validator) در کد اختصاص دهیم. فراخوانی تابع ->withErrors($validator) باعث می شود خطاها از نمونه ی validator در session ریخته شده تا بعدها از طریق متغیر $errors بتوانیم در view به آن دسترسی داشته باشیم.
یادآور می شویم که برای نمایش (render) دادن خطاهای اعتبارسنجی فرم، در view از دستور@include('common.errors') استفاده می کنیم. پارامتر ورودی common.errors به ما این اجازه را می دهد تا به راحتی خطاهای اعتبارسنجی را با فرمتی یکسان در تمامی صفحات برنامه ی خود نمایش دهیم. حال به تعریف محتویات این view می پردازیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- resources/views/common/errors.blade.php --> @ if ( count ( $errors ) > 0) &l;!-- Form Error List --> <div class = "alert alert-danger" > <strong>Whoops! Something went wrong!</strong> <br><br> <ul> @ foreach ( $errors ->all() as $error ) <li>{{ $error }}</li> @ endforeach </ul> </div> @ endif <button></button> |
متغیر$errors در تمامی view های لاراول در دسترس می باشد. در صورتی که هیچ خطای اعتبارسنجی (validation error) وجود نداشته باشد، این متغیر تنها یک نمونه ی تهی از ViewErrorBag خواهد بود.
ایجاد Task
پس از اجرا و اداره ی اعتبارسنجی ورودی، با پر کردن route یک task جدید ایجاد می کنیم. بعد از اینکه task را ایجاد کردیم، کاربر را به آدرسURL " / " بازگشت می دهیم (redirect می کنیم). برای تعریف task جدید در لیست، پس از ایجاد و تنظیم property های لازم در مدلEloquent، متد save را صدا می زنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Route::post( '/task' , function (Request $request ) { $validator = Validator::make( $request ->all(), [ 'name' => 'required|max:255' , ]); if ( $validator ->fails()) { return redirect( '/' ) ->withInput() ->withErrors( $validator ); } $task = new Task; $task ->name = $request ->name; $task ->save(); return redirect( '/' ); }); <button></button> |
پس از نوشتن کد بالا می توانیم به راحتی task جدید به لیست اضافه کنیم. اکنون می خواهیم با ساخت یک لیست از تمامی task های جاری، viewبرنامه خود را بسط دهیم.
نمایش دادن Task های جاری
در ابتدا لازم است route (مسیر) " / " را برای ارسال task های جاری به view ویرایش کنیم. تابع view یک پارامتر دومی می پذیرد که آرایه ای از داده ها است و در اختیار view قرار می گیرد، سپس هر کلید موجود در این آرایه داخل view به یک متغیر تبدیل می شود:
1 2 3 4 5 6 7 8 | Route::get( '/' , function () { $tasks = Task::orderBy( 'created_at' , 'asc' )->get(); return view( 'tasks' , [ 'tasks' => $tasks ]); }); <button></button> |
پس از ارسال داده ها در قالب پارامتر دوم، می توانیم به راحتی در task های برنامه مقیم در فایل ویو tasks.blade.php چرخیده (حلقه زده) و آن ها را در یک جدول به نمایش بگذاریم. دستور @foreach از موتور Blade به ما این امکان را می دهد تا حلقه های با کد مختصر نوشته که با سرعت بی نظیر به کد ساده و در عین حال بهینه یPHP ترجمه (compile) می شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | @ extends ( 'layouts.app' ) @section( 'content' ) <!-- Create Task Form... --> <!-- Current Tasks --> @ if ( count ( $tasks ) > 0) <div class = "panel panel-default" > <div class = "panel-heading" > Current Tasks </div> <div class = "panel-body" > <table class = "table table-striped task-table" > <!-- Table Headings --> <thead> <th>Task</th> <th> </th> </thead> <!-- Table Body --> <tbody> @ foreach ( $tasks as $task ) <tr> <!-- Task Name --> <td class = "table-text" > <div>{{ $task ->name }}</div> </td> <td> <!-- TODO: Delete Button --> </td> </tr> @ endforeach </tbody> </table> </div> </div> @ endif @endsection <button></button> |
با کدهایی که تا همین جا نوشته ایم برنامه ی ما ظاهرا کامل به نظر می رسد. اما برای حذف task های جاری که به انجام رسیده اند از لیست هیچ سازوکاری وجود ندارد. در بخش بعدی این مکانیزم را به برنامه اضافه می کنیم.
حذف Task ها
اضافه کردن دکمه ی Delete به برنامه
یک متن به نام "TODO" در کد برنامه ی خود قرار دادیم که کد دکمه ی Delete بایستی در آنجا به برنامه اضافه شود. در این بخش به ازای هر سطر در لیست task یک دکمه ی Delete در فایل ویو tasks.blade.php اضافه می کنیم. در این لیست یک فرم با تنها یک دکمه به ازای هر task در لیست ایجاد می کنیم. با کلیک بر روی دکمه ی Delete، درخواست DELETE /task به اپلیکیشن ارسال می شود:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <tr> <!-- Task Name --> <td class = "table-text" > <div>{{ $task ->name }}</div> </td> <!-- Delete Button --> <td> <form action= "{{ url('task/'.$task->id) }}" method= "POST" > {!! csrf_field() !!} {!! method_field( 'DELETE' ) !!} <button type= "submit" class = "btn btn-danger" > <i class = "fa fa-trash" ></i> Delete </button> </form> </td> </tr> <button></button> |
نکته ای در خصوص method spoofing (جعل متدهای ارسال فرم)
حال به مثال خود می پردازیم. همان طور که مشاهده می کنید خصیصه ی method در کد بالا با Post مقداردهی شده است، با این حال ما در برنامه ی خود از طریق Route::delete به درخواست ارسالی پاسخ می دهیم. در فرم های HTML تنها از روش ارسال داده ی Post و Get پشتیبانی می شود، از این رو می بایست از یک طریقی درخواست DELETE از فرم را جعل (spoof) کنیم.
برای جعل کردن درخواست DELETE می بایست نتایج تابع method_field('DELETE') را در فرم جاری خود قرار دهیم. این تابع یک ورودی که نوعش hidden می باشد، ایجاد می کند. لاراول این خروجی را شناسایی کرده و سپس با استفاده از آن، متد درخواست HTTP را بازنویسی می کند. فیلد ایجاد شده بدین شکل می باشد:
1 2 | <input type= "hidden" name= "_method" value= "DELETE" > <button></button> |
حذف کردن Task جاری از لیست
در پایان منطقی به route خود اضافه می کنیم که یک task را از لیست حذف می کند. می توانیم با استفاده از implicit model binding مدل Taskرا که با پارامتر {task} متناظر می باشد، به صورت خودکار بازیابی کنیم.
در تابع callback روت (route) برنامه، با استفاده از متد delete سطر مورد نظر را حذف می کنیم. پس از اینکه سطر حذف شد، کاربر را به آدرسurl " / " بازگشت (redirect) می دهیم، بدین شکل:
1 2 3 4 5 6 | Route:: delete ( '/task/{task}' , function (Task $task ) { $task -> delete (); return redirect( '/' ); }); <button></button> |