Tôi tự hỏi cách xử lý 400+ Tuyến đường.Quản lý 400 tuyến đường trong Laravel với tính năng tự động hoàn thành PhpStorm
Hiện tại, chúng tôi tách tất cả các tuyến đường thành nhiều tệp theo không gian tên bộ điều khiển mà chúng thuộc về.
Cấu trúc của App/Http/Routes
trông giống như sau:
- Auth.php
- Marketing.php
- Orders.php
Tất cả các tuyến đường của chúng tôi được đặt tên. Nhưng ở đây có vấn đề thực tế chúng ta đang gặp phải.
Tuyến đường của chúng tôi được đặt tên bằng cách sử dụng Lớp học chứa các hằng số xác định tên tuyến đường.
namespace App\Http\Controllers\Marketing;
class RouteConstants
{
/**
* MarketingController
*/
const INDEX = 'marketing.index';
const DISABLED = 'marketing.disabled';
Các lớp liên tục này nằm trong vùng tên bộ điều khiển. Sau đó, họ được sử dụng trong Marketing.php
tuyến nộp như sau:
/**
* Marketing Routes
*/
Route::group(['namespace' => 'App\Http\Controllers\Marketing'], function() {
/**
* MarketingController Routes
*/
Route::get('marketing/overview', [
'uses' => '[email protected]',
'as' => MarketingRoutes::INDEX
]);
Route::get('marketing/disabled', [
'uses' => '[email protected]',
'as' => MarketingRoutes::DISABLED
]);```
này được thực hiện bởi vì nó cho phép chúng ta sử dụng các tính năng PhpStorm autocomplete và cũng nhìn thấy nơi mỗi tuyến đường được sử dụng.
Nhưng vấn đề với điều này là chúng tôi đang sử dụng hai hệ thống cùng một lúc. Hệ thống đặt tên định tuyến nội bộ của Laravel và đồng thời chúng tôi đang sử dụng hệ thống riêng của chúng tôi để xác định tên là hằng số.
Phải có cách tốt hơn để quản lý số lượng tuyến đường này và có cách kiểm tra tập quán trong tệp dự án.
Hiện nay nó cũng khá lộn xộn trong quan điểm của chúng tôi:
<a href="{{ route(App\Http\Controllers\Marketing\RouteConstants::INDEX) }}">Marketing</a>
Tôi đã thử các plugin Laravel cho PhpStorm nhưng điều này không hoạt động đúng khi có một thư mục với các tuyến đường đó sẽ được tự động nạp vào RouteServiceProvider
.
Thử nghiệm nó và nó hoạt động. Nhược điểm duy nhất là bạn không thể nhìn thấy nơi các tuyến đường của bạn đang được sử dụng trong ứng dụng. Tôi đoán tôi sẽ mở một vấn đề trên plugin Laravel Phpstorm để có thể thêm chức năng này. –
Đã mở một sự cố về plugin Laravel Phpstorm https://github.com/Haehnchen/idea-php-laravel-plugin/issues/85 –