سیستم routing مشابه با لاراول

پرسیده شده
فعالیت 1246 روز پیش
دیده شده 705 بار
1

دوستان سلام 

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

ممنون میشم ایرادات رو بگین حل کنم!

توضیحات برای استفاده : 

این سیستم روتینگ با MVC هست تمامی مسیر هایی که میخواین داشته باشید رو در فولدر routesو فایل web و برای api هم از فایل api مسیر دهی میشه. 

مشابه کد پایین میتونین مسیر ها رو ایجاد کنید : 

<?php
use System\Routing\Web\Route;

#Reserve Routes
Route::get('/','HomeController@index');

Route::namespace('Admin')->prefix('admin')->group(function () {
    Route::get('/','Dashboard@index');
    Route::prefix('post')->group(function () {
       Route::get('/','PostController@index');
       Route::get('/show','PosrController@show');
       Route::post('/store','PostController@store')->name('admin.store');
       Route::put('/edit/{id}','PostController@edit');
    });
});

شما در این سیستم روتینگ برای تعریف هر روت باید بر اساس متود ارسال درخواستتون مسیرتون رو بسازید برای مثال برای صفحه اصلی متودی که قرار صفحه اصلی ما رو به نمایش بگذاره متود گت هست بنابراین از متود گت استفاده میکنیم مشابه زیر : 

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

اینجا از کلاس روت متود گت رو صدا زدم متود گت دوتا پارامتر ورودی میگیره اولی آدرسی که قرار تو مرورگر زده بشه و براتون نمایش داده بشه اینجا من مسیر / رو دادم که به معنی صفحه اصلی سایت هست و پارامتر دوم کنترلر و متودی که قرار اجرا بشه رو بهش میدیم اینجا من خواستم هر وقت کاربر درخواست صفحه اصلی رو داد به کنترلر هوم و متود ایندکس این کنترل بره و اون رو اجرا کنه

اما این روتینگ به همینجا ختم نشده و میتونیم گروه های روتینگ رو بسازیم به فرض مثال اگر ما روتی رو برای ادمین داشته باشیم دیگه نیازی نیست اگر ادمین چنیدن مسیر داره هر دفعه بنویسیم 

Route::get('/admin','Dashboard@index');
Route::get('/admin/post','PostController@index');
Route::put('/admin/post/edit/{id}','PostController@edit');

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

Route::prefix('admin')->group(function () {
    Route::get('/','Dashboard@index');
    Route::prefix('post')->group(function () {
       Route::get('/','PostController@index');
       Route::get('/show','PosrController@show');
       Route::post('/store','PostController@store');
       Route::put('/edit/{id}','PostController@edit');
    });
});

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

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

namespace()

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

app/Http/Controller 

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

Route::namespace('Admin')->prefix('admin')->group(function(){
     Route::get('/','Dashboard@index');
}); 

اینجا ما کنترلرمون داخل مسیر

app/Http/Controller/Admin  

ساختیم برای اینکه سیستم بتونه پوشه ادمین رو شناسایی کنه توی روتمون با متود نیم اسپیس اسم پوشه رو بهش دادیم 

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

 

لینک گیت هاب

 

امید وارم مفید باشه

فایل پیوست

میثم نصرتی
میثم نصرتی

7 آذر 99

0
حذف شده

سلام و احترام

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

فایل پیوست

امیر صالحی

توسط

امیر صالحی

7 آذر 99

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

7 آذر 99