قهرما اول لاراول - کنترلرها controllers

قهرمان اول لاراول – کنترلر ها (Controllers)

قهرمان اول لاراول – کنترلر ها (Controllers)

در این قسمت از سری آموزش های لاراول قصد داریم با درباره کنترل های لاراول حرف بزنیم و

چندتا مثال برای اونا بزنیم .

همونطور که قبلا گفته شده بود ، لاراول از ساختار MVC (MODEL-View-Controller ) استفاده میکنید ، پس Controller یکی از اصلی ترین مبحث در فریم ورک لاراول هست .

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

root/app/Http/Controllers

بهتره اول نحوه ی ساخت یک کنترل رو یاد بگیرم .

ساخت یک کنترلر – make new Controller

میشه کنترل رو به صورت دستی و با ایجاد یک فایل جدید توی پوشی controllers ساخت ولی بهترین راه برای ایجاد یک کنترلر جدید . استفاده از دستورات artisan هستش .

برای ساخت یک کنترل جدید لازمه فقط توی ترمینال یا Cmd باز شده در پوشه ای اصلی لاراول دستور زیر رو بزنید :

php artisan make:controller ControllerName

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

php artisan make:controller UserController

توی مبحث ساخت کنترلر، توصیه میشه که اسم کنترل به همین شکل مثال زده باشه . یعنی Controller در اسمش ذکر بشه . مثل :

UserController , PostController ,CategoryController

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

اگر بخوابین کنترل جدید رو داخل یک فولد ایجاد کنیم ، لازمه فقط اسم فولدرو ذکر کنم . مثل :

php artisan make:controller Admin/UserController 

بعد از اجرای دستور بالا یک کنترل جدید همراه با رعایت namespace ساخته میشه و اماده استفادس.

مثال

در آموزش قبل یک Route برای صفحه اول ساخته شد . الان میخواییم ک این روت رو به یک کنترلر وصل کنیم.

برای شروع اول کنترلر رو درس میکنیم . مثلا : First

php artisan make:controller FirstController 

با اجرای دستور زیر هم اکنون کنترل FirstController توی پوشه ی controllers قابل دسترس هستش.

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FirstController extends Controller
{
    //
}

خوب حالا باید اول فانکشن (function) خودمونو بسازیم تا بتونیم Route رو به اون وصل کنیم . تو این مثال اسم فانکشن جدید رو میذاریم index . پس داریم :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FirstController extends Controller
{
    public function index(){
        return ' hello , wow its work';
    }
}

خوب تنهای کاری ک مونده اینه که Route رو وصل کنیم به کنترلر که میریم توی فایل web.php و روت قبلی رو اصلاح میکنیم .

Route::get('/','UserController@index');

و تمام ، حالا اگر صفحه اول وب سایتمونو باز کنیم باید پیام “hello , wow its work” رو ببینیم .

Resource Controller

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

برای این کار لازمه فقط وقتی میخوایین کنترلر جدیدی درس کنید اخرش flag به اسم resource رو بذارید. به مثال زیر توجه کنید :

php artisan make:controller PhotoController --resource

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

Route::resource('photos', 'PhotoController');

و تمام . الان اگر به کنترلر نگا کنیم باید این ساختارو ببنیم :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PhotoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

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

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

مثل :

laravel.dev/photos
نوع درخواستآدرس اینترنتیفانکشن متصل شدهنام route
GET/photosindexphotos.index
GET/photos/createcreatephotos.create
POST/photosstorephotos.store
GET/photos/{photo}showphotos.show
GET/photos/{photo}/editeditphotos.edit
PUT/PATCH/photos/{photo}updatephotos.update
DELETE/photos/{photo}destroyphotos.destroy

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

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

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

برای اطلاعات بیشتر میتوینن از لینک زیر مطالب مربوط به کنترلر ها رو بیشتر بخونید .

https://laravel.com/docs/6.0/controllers

پست های مرتبط

قهرمان اول لاراول – Routing

قهرمان اول لاراول – Routing

قهرمان اول لاراول در این قسمت از سری آموزش های لاراول routing و مسیریابی ، انواع route و چگونگی آن در لاراول با مثال عملی... .

نوشته شده در
قهرمان اول لاراول – پیادسازی دیتابیس و احراز هویت

قهرمان اول لاراول – پیادسازی دیتابیس و احراز هویت

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

نوشته شده در

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

با عضویت در خبرنامه از آخرین اخبار مطلع شوید