برای اینکه اولین عملگر پکیج را بسازیم نیاز هست یک فایل controller ایجاد کنیم. از دستور make:controller
خود لاراول استفاده نمیکنیم چون زمان زیادی برای تغییرات روی namespace ها و حذف اضافات داخل آن نیاز خواهد بود. پس آن را دستی ایجاد میکنیم.
در مسیر src/Http/Controllers
فایل زیر را ایجاد میکنیم:
packages/themahdavi/laravel-permission-editor/src/Http/Controllers/RoleController.php:
namespace themahdavi\LaravelPermissionEditor\Http\Controllers;
use Illuminate\Routing\Controller;
class RoleController extends Controller
{
public function index()
{
return 'It works!';
}
}
توجه: در کد بالا ما از Illuminate\Routing\Controller
ارث بری کردیم که از داخل core لاراول است. از کنترلری که داخل مسیر app/Http/Controllers
پروژه لاراولی قرار دارد استفاده نکردیم. در برخی از پکیجها نیاز هست از این کنترلر استفاده شود چون بعضی از عملیات تعریف شده داخل آن به کار میآید. اما در پکیج ما کنترلر اصلی core لاراول جوابگو است.
حالا چطور باید یک Route بسازیم تا بتواند این کنترلر را صدا بزند ؟ کافی است داخل ساختار پکیج فایل routes/web.php
را ایجاد کنیم.
packages/themahdavi/laravel-permission-editor/routes/web.php:
use themahdavi\LaravelPermissionEditor\Http\Controllers\RoleController;
use Illuminate\Support\Facades\Route;
Route::resource('roles', RoleController::class);
توجه: مسیردهیها خارج از پوشه src/
خواهند بود. src/
در حقیقت پوشه app/
لاراول است. داخل آن src/Models
و src/Http
و ... قرار دارند. اما مسیرهای resources/
و routes/
بیرون هستند.
در کدبالا namespace کنترلر را به صورت کامل نوشتیم البته جلوتر داخل composer.json ریجیستر خواهیم کرد.
حالا وقتش رسیده است تا Route را ریجیستر کنیم. اولین باری است که به Service provider ایجاد شده در درس سوم مراجعه میکنیم:
packages/themahdavi/laravel-permission-editor/src/PermissionEditorServiceProvider.php:
use Illuminate\Support\Facades\Route;
class PermissionEditorServiceProvider extends ServiceProvider
{
public function boot()
{
Route::prefix('permission-editor')
->as('permission-editor.')
->group(function () {
$this->loadRoutesFrom(__DIR__ . '/../routes/web.php');
});
}
}
مسیرها با تابع ()this->loadRoutesFrom$
با دریافت یک ورودی لود میشوند.
اگر دقت کنید برای اینکه با مسیردهی خود پروژه تداخل ایجاد نشود آنها را در یک prefix مشخصی قرار میدهیم. البته میتوانیم این را داخل routes/web.php
تعریف کنیم اما بهتر است آن را داخل service provider بنویسیم.
برای اینکه تغییرات پکیج روی پروژه لاراول هم اعمال شوند دستور composer update
را اجرا میکنیم. خروجی موفقیتآمیز دستور به شکل زیر خواهد بود:
- Upgrading themahdavi/laravel-permission-editor (dev-main cac9b96 => dev-main a066e56): Source already present
در نهایت برای اتمام این درس با اجرای پروژه روی مرورگر و مراجعه به آدرس http://localhost/permission-editor/roles
تصویر زیر را خواهیم دید:
375 کلمه
440 کلمه
190 کلمه
365 کلمه
268 کلمه
191 کلمه
570 کلمه
349 کلمه
1 کلمه
1 کلمه
1 کلمه
1 کلمه