کنترلر-ها-در-فریمورک-لاراول

کنترلر ها در فریمورک لاراول – Laravel Controllers

دسته بندی : لاراول سطح مقاله : مقدماتی زمان مطالعه : 10 دقیقه آخرین بروز رسانی: 19 تیر 1399

کنترلرها درفریمورک لاراول

در چارچوب برنامه نویسی با متد MVC ، حرف C مخفف Controller است. این به عنوان یک ترافیک مستقیم بین View ها و Model ها عمل می کند. در این مقاله با کنترلرها درفریمورک لاراول آشنا می شوید و جزییات مربوط به آن را فرا یم گیرید تا آخر این مقاله با ما باشید.

فهرست محتوای این مقاله

  • کنترلرها درفریمورک لاراول
  • کنترلر چیست؟
  • ایجاد یک کنترلر
  • Controller Middleware
  • اختصاص Middleware به Route
  • اختصاص Middleware در سازنده Controller
  • Restful Resource Controllers
  • Implicit Controllers
  • Constructor Injection

کنترلر چیست؟

کنترلر ها در واقع دو کار منحصر به فرد را بصورت یکجا و بهینه انجام می دهند:

  1. اول اینکه پردازش داده های ارسالی از طریق مدل ها را انجا می دهند.
  2. در مرحله دوم به ارسال اطلاعات به نماها (View) می پردازند.

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

ایجاد یک کنترلر

خط فرمان یا ترمینال (cmd) را بر اساس سیستم عامل مورد استفاده خود باز کنید و دستور زیر را تایپ کنید تا با استفاده از Artisan CLI (Command Line Interface) کنترلر ایجاد کنید.

php artisan make:controller <controller-name> --plain

<controller-name> را با نام کنترل کننده خود جایگزین کنید. با اجرای کد بالا یک کنترلر ساده ایجاد می شود. اگر نمی خواهید یک کنترلر ساده ایجاد کنید ، می توانید کد را نادیده بگیرید. کنترلرها در فریمورک لارول را می توان در آدرس app/Http/Controllers مشاهده کرد.

در آدرس بالا خواهید دید که قبلاً برخی برنامه نویسی های اساسی برای شما انجام شده است و می توانید کد های دلخواه خود را اضافه کنید. کنترل کننده ایجاد شده را می توانید از مسیر routes.php فراخوانی کنید.

Route::get(‘base URI’,’controller@method’);

آموزش مسیریابی در لاراول را دنبال کنید.

مثال های ایجاد کنترلر

برای ایجاد UserController دستور زیر را اجرا کنید.

php artisan make:controller UserController --plain

پس از اجرای موفق ، خروجی زیر را دریافت خواهید کرد.

usercontroller

شما می توانید کنترلر ایجاد شده را در برنامه / Http / Controller / UserController.php با برخی برنامه نویسی اساسی که قبلاً برای شما نوشته شده است مشاهده کنید و می توانید بر اساس نیاز خود کدهای خود را اضافه کنید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   //
}

Controller Middleware

ما قبلاً ابزارهای واسط را دیده ایم و می توانیم از آن با استفاده از کنترلرها در فریمورک لاراول نیز بهره ببریم. Middleware همچنین می تواند به مسیر کنترل کننده یا در داخل سازنده کنترلر شما اختصاص یابد. می توانید از متد middleware برای اختصاص وسایل میان افزار به کنترلر استفاده کنید. میان افزار ثبت شده می تواند محدود به روش خاصی از کنترل کننده باشد.

اختصاص Middleware به Route

Route::get('profile', [
   'middleware' => 'auth',
   'uses' => 'UserController@showProfile'
]);

در اینجا ما در مسیر پروفایل ، میان افزار معتبر را به UserController اختصاص می دهیم.

اختصاص Middleware در سازنده Controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   public function __construct() {
      $this->middleware('auth');
   }
}

در اینجا ما می توانیم با استفاده از متد middleware در سازنده UserController میان افزار را به خود اختصاص دهیم.

مثال middleware در لاراول

خطوط زیر کد را به پرونده app / Http / lines.php اضافه کنید و آن را ذخیره کنید.

<?php
Route::get('/usercontroller/path',[
   'middleware' => 'First',
   'uses' => 'UserController@showPath'
]);

با اجرای خط کد زیر یک واسطه به نام FirstMiddleware ایجاد کنید.

php artisan make:middleware FirstMiddleware

کد زیر را به روش دسته برنامه FirstMiddleware تازه ایجاد شده در app/Http/Middleware اضافه کنید.

FirstMiddleware.php

<?php

namespace App\Http\Middleware;
use Closure;

class FirstMiddleware {
   public function handle($request, Closure $next) {
      echo '<br>First Middleware';
      return $next($request);
   }
}

با اجرای دستور زیر یک واسطه به نام SecondMiddleware ایجاد کنید.

php artisan make:middleware SecondMiddleware

کد روش زیر را به روش دسته دوم SecondMiddleware تازه ایجاد شده در app/Http/Middleware اضافه کنید.

SecondMiddleware.php

<?php

namespace App\Http\Middleware;
use Closure;

class SecondMiddleware {
   public function handle($request, Closure $next) {
      echo '<br>Second Middleware';
      return $next($request);
   }
}

با اجرای خط زیر ، یک کنترلر به نام UserController ایجاد کنید.

php artisan make:controller UserController --plain

پس از اجرای موفقیت آمیز URL ، خروجی زیر را دریافت خواهید کرد.

usercontroller1

کدهای زیر را در پرونده app / Http / UserController.php کپی کنید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   public function __construct() {
      $this->middleware('Second');
   }
   public function showPath(Request $request) {
      $uri = $request->path();
      echo '<br>URI: '.$uri;
      
      $url = $request->url();
      echo '<br>';
      
      echo 'URL: '.$url;
      $method = $request->method();
      echo '<br>';
      
      echo 'Method: '.$method;
   }
}

اگر هنوز این برنامه را اجرا نکرده اید ، سرور وب php را با اجرای دستور زیر راه اندازی کنید.

php artisan serve

به آدرس زیر مراجعه کنید.

http://localhost:8080/usercontroller/path

خروجی همانطور که در تصویر زیر نشان داده می شود ظاهر می شود.

usercontroller2

Restful Resource Controllers

اغلب در حین ساختن یک برنامه باید عملیات CRUD (ایجاد ، خواندن ، به روزرسانی ، حذف) را انجام دهیم. کنترلر ها در فریمورک لاراول این کار را برای ما آسان می کند. فقط یک کنترلر ایجاد کنید و Laravel به طور خودکار تمام روش ها را برای عملیات CRUD ارائه می دهد. همچنین می توانید یک مسیر واحد برای همه روش ها در فایل rout.php ثبت کنید.

مثال ساخت CRUD

با اجرای دستور زیر ، یک کنترلر به نام MyController ایجاد کنید.

php artisan make:controller MyController

کد زیر را وارد کنید:

app/Http/Controllers/MyController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class MyController extends Controller {
   public function index() {
      echo 'index';
   }
   public function create() {
      echo 'create';
   }
   public function store(Request $request) {
      echo 'store';
   }
   public function show($id) {
      echo 'show';
   }
   public function edit($id) {
      echo 'edit';
   }
   public function update(Request $request, $id) {
      echo 'update';
   }
   public function destroy($id) {
      echo 'destroy';
   }
}

خط زیر کد را در پرونده app / Http / lines.php اضافه کنید.

Route::resource('my','MyController');

اکنون با ثبت یک کنترلر با منبع ، کلیه روش های MyController را ثبت می کنیم. در زیر جدول اقدامات انجام شده توسط کنترل کننده منابع قرار دارد.

Verb Path Action Route Name
GET /my index my.index
GET /my/create create my.create
POST /my store my.store
GET /my/{my} show my.show
GET /my/{my}/edit edit my.edit
PUT/PATCH /my/{my} update my.update
DELETE /my/{my} destroy my.destroy

URL های نشان داده شده در جدول زیر را امتحان کنید.

URL Description Output Image
http://localhost:8000/my Executes index method of MyController.php index
http://localhost:8000/my/create Executes create method of MyController.php create
http://localhost:8000/my/1 Executes show method of MyController.php show
http://localhost:8000/my/1/edit Executes edit method of MyController.php edit

Implicit Controllers

کنترلرهای ضمنی به شما امکان می دهد یک مسیر واحد را برای انجام هر عملکردی در کنترلر تعریف کنید. شما می توانید آن را در فایل route.php با روش Route:controller همانطور که در شکل زیر نشان داده شده است تعریف کنید.

Route::controller(‘base URI’,’<class-name-of-the-controller>’);

<class-name-of-the-controller> را با نام کلاس که به کنترل خود داده اید جایگزین کنید.

نام روش کنترل کننده باید با متد HTTP مانند get یا post شروع شود. اگر آن را با دریافت شروع کنید ، فقط با دریافت درخواست رسیدگی می کند و اگر با ارسال شروع شود ، پس از آن درخواست ارسال را انجام می دهد. پس از متد HTTP ، می توانید نام خود را به این روش بدهید ، اما باید عنوان مورد URI را دنبال کند.

Constructor Injection

از کانتینر سرویس Laravel برای رفع همه کنترل کننده های Laravel استفاده می شود. در نتیجه ، شما می توانید به هرگونه وابستگی که کنترل کننده شما در سازنده آن نیاز دارد ، تایپ کنید. وابستگی به طور خودکار برطرف می شود و به عنوان مثال به آن تزریق می شود.

صحبت پایانی

کنترلرها درفریمورک لاراول بسیار قدرتمند و اصولی ساخته شده و هیچ گونه محدویتی برای شما ایجاد نمی کنند ، شما با خلاقیت و مهارت خود می توانید بهترین خروجی ممکن را در فریمورک لاراول دریافت کنید.

منبع : tutorialspoint

این مقاله چقدر براتون مفید بود؟

میانگین رتبه : 5/5 - تعداد رای : 2