قهرمان اول لاراول – کنترلر ها (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 | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{photo} | show | photos.show |
GET | /photos/{photo}/edit | edit | photos.edit |
PUT/PATCH | /photos/{photo} | update | photos.update |
DELETE | /photos/{photo} | destroy | photos.destroy |
سعی کنید این مثالو یک بار خودتون انجام بدین تا بیشتر متوجه بشین ، با این حال وقتی شروع به ساخت وبلاگ کردیم از این مثال استفاده خواهیم کرد .
این آموزشو همین جا تموم میکنیم . البته درسته مطالبی هم موند ولی ادامه ی اموزش باعث قاطی شدن مطالب و بهم ریختگی میشه.
سعی مییشه بقیه مطالب و همچنین اصول و ترفنده ها هنگام ساخت وبلاگ بهتون آموزش داده بشه .
برای اطلاعات بیشتر میتوینن از لینک زیر مطالب مربوط به کنترلر ها رو بیشتر بخونید .