برنامه نویسی با محبوب ترین فریم ورک پی اچ پی 4#
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
کارگاه رویه کوبی در تهران
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
خودتان را اینجا معرفی کنید
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
گاهی ممکن است از Route برای برنامه هایی که دارای مسیرهای مختلفی هستند استفاده شود. اگر برنامه نویس طبق مثال زیر اقدام به مسیردهی نماید دچار سردرگمی شده و نظم دهی و کارایی برنامه نیز پایین می آید.
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('user/profile', function () {
return view('user.profile');
});
با استفاده از کنترل می توانید دستورات بالا را فقط به صورت زیر در Route وارد نمائید.
Route::controller('user', 'UserController');
کنترلر چیست؟
کنترلر یکی از اجزای اساسی برنامه نویسی MVC می باشد و در لاراول به منظور ساماندهی و مدیریت بخشی از درخواست های مرتبط برنامه از کلاس های کنترلر استفاده می شود.
کنترلها در دایرکتوری app/Http/Controllers ایجاد و ذخیره می شوند.
ایجاد یک کنترلر:
برای ایجاد یک کنترکر کافیست از طریق ترمینال خود به دایرکتوری برنامه رفته و سپس با وارد کردن دستور زیر یک کنترلر ایجاد نمائیم.
php artisan make:controller UserController
ساختار یک کنترلر:
namespace AppHttpControllers;
use AppUser;
use AppHttpControllersController;
class UserController extends Controller
{
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function showProfile($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
کد بالا نمونه ای از یک کنترل می باشد.
نکته: کلیه کنترلها می بایست از کلاس Controller ارث بری کنند.
با استفاده از دستور زیر می توانید اطلاعات مربوط به یک کاربر را به فایل profile که در دایرکتوری user وجود دارد ارسال نمائید.(طبق مثال فوق)
نکته: کلیه کنترلها می بایست از کلاس Controller ارث بری کنند.
با استفاده از دستور زیر می توانید اطلاعات مربوط به یک کاربر را به فایل profile که در دایرکتوری user وجود دارد ارسال نمائید.(طبق مثال فوق)
Route::get('user/{id}', 'UserController@showProfile');
کنترلرها و فضای نام (namespace)
برای هرکلاس باید namespace آن را تعریف کنیم که این فضای نام در واقع مسیر قرارگیری کلاس از پوشه app می باشد و برای کنترلرها AppHttpControllers تعریف می کنیم. در صورتی که داخل دایرکتوری Controllers یک دایرکتوری دیگر مثلا به نام Auth ایجاد کرده باشیم و کنترلری در آن تعریف کنیم فضای نام به صورت namespace AppHttpControllersAuth می باشد.
نکته : همیشه نام کلاس های کنترلر را به صورت PascalCase و در انتهای آن کلمه Controller را بیاورید. بهتر است اکشن ها را هم به صورت camelCase نامگزاری کنید.
نکته : همیشه نام کلاس های کنترلر را به صورت PascalCase و در انتهای آن کلمه Controller را بیاورید. بهتر است اکشن ها را هم به صورت camelCase نامگزاری کنید.
فیلتر کردن کنترلها
همانطور که در آموزشی قبلی توضیح دادم امکان فیلتر کردن مسیرها در لاراول وجود دارد که البته هر مسیر می تواند مربوط به یک کنترلر مربوط شود.
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'UserController@showProfile'
]);
بطور مثال در کد بالا برای دسترسی به متد showProfile بایک از فیلتر auth عبور کرد.
همچنین امکان استفاده از Middleware در متد سازنده کنترل نیز وجود دارد به مثال زیر توجه کنید:
همچنین امکان استفاده از Middleware در متد سازنده کنترل نیز وجود دارد به مثال زیر توجه کنید:
class UserController extends Controller
{
/**
* Instantiate a new UserController instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('log', ['only' => ['fooAction', 'barAction']]);
$this->middleware('subscribed', ['except' => ['fooAction', 'barAction']]);
}
}
باتوجه به متد سازنده در کنترلر UserCotroller برای کلیه اکشن ها فیلتر auth و فیلترهای log برای برخی از اکشن ها و subscribed برای برخی از اکشن ها به جز موارد ذکر شده در آرایه مربوطه مورد نیاز است.
کنترلرهای RESTful
به طور مثال با ایجاد PhotoController توسط ترمینال خود و اضافه کردن کد
Route::resource('photo', 'PhotoController');
در فایل routes اکشن های ایجاد شده در کنترل فوق طبق درخواستهای زیر مورد استفاده قرار می گیرند.
همچنین می توانیم فقط اکشن های خاصی را به صورت RESTful تعریف کنیم
به طور مثال ابتدا فایل routes کد زیررا نوشته و ذخیره می نمائیم
با ما همراه باشید
Verb | Path | Action | Route Name |
GET | /photo | index | photo.index |
GET | /photo/create | create | photo.create |
POST | /photo | store | photo.store |
GET | /photo/{photo} | show | photo.show |
GET | /photo/{photo}/edit | edit | photo.edit |
PUT/PATCH | /photo/{photo} | update | photo.update |
DELETE | /photo/{photo} | destroy | photo.destroy |
همچنین می توانیم فقط اکشن های خاصی را به صورت RESTful تعریف کنیم
Route::resource('photo', 'PhotoController', ['only' => ['index', 'show']]); Route::resource('photo', 'PhotoController', ['except' => ['create', 'store', 'update', 'destroy']]);
کنترلهای نامرئی
لاراول همچنین به شما اجازه می دهد که به راحتی نسبت به مسیرهای برنامه کنترل داشته باشید.به طور مثال ابتدا فایل routes کد زیررا نوشته و ذخیره می نمائیم
Route::controller('users', 'UserController');
سپس کلاس UserController را ایجاد کرده و طبق مثال زیر می توانید درخواستهای متعدد را کنترل نمائید.
namespace AppHttpControllers;
class UserController extends Controller
{
/**
* Responds to requests to GET /users
*/
public function getIndex()
{
//
}
/**
* Responds to requests to GET /users/show/1
*/
public function getShow($id)
{
//
}
/**
* Responds to requests to GET /users/admin-profile
*/
public function getAdminProfile()
{
//
}
/**
* Responds to requests to POST /users/profile
*/
public function postProfile()
{
//
}
}
با ما همراه باشید
نظرات و سوالات کاربران
هم اکنون شما اولین دیدگاه را ارسال کنید.