이 글에서는 주로 Laravel에서 리소스 라우팅 커스텀 URL을 다시 작성하는 방법을 소개합니다. 필요하신 분들은 참고하시면 됩니다.
머리말
이 글에서는 주로 Laravel에서 리소스 라우팅을 다시 작성하는 방법을 소개합니다. 라우팅 사용자 정의 URL은 모두가 참고하고 학습할 수 있도록 공유됩니다. 아래에서는 자세한 소개를 살펴보겠습니다.
재작성 이유
최근에는 Laravel을 사용하여 프로젝트를 개발하고 있습니다. . 라우팅 코드를 단순화하기 위해 Laravel의 리소스 라우팅이 사용됩니다. Route::resource('photo', 'PhotoController');
Route::resource('photo', 'PhotoController');
在默认情况下,Laravel生成的路由表如下:
动作 | 路径 | Action | 路由名称 |
---|---|---|---|
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 |
为了满足项目需求,需将/photo/{photo}/edit 路径改为 /photo/edit/{photo}
实现步骤
查询了Laravel源码,发现此路径生成的方法在IlluminateRoutingResourceRegistrar.php类中,我们需重写此类的addResourceEdit方法即可。
重写addResourceEdit方法
创建新类 AppRoutingResourceRegistrar.php,代码如下:
namespace App\Routing; use Illuminate\Routing\ResourceRegistrar as OriginalRegistrar; class ResourceRegistrar extends OriginalRegistrar { /** * Add the edit method for a resourceful route. * * @param string $name * @param string $base * @param string $controller * @param array $options * @return \Illuminate\Routing\Route */ protected function addResourceEdit($name, $base, $controller, $options) { $uri = $this->getResourceUri($name).'/'.static::$verbs['edit'].'/{'.$base.'}'; $action = $this->getResourceAction($name, $controller, 'edit', $options); return $this->router->get($uri, $action); } }
在AppServiceProvider中注册这个类
public function boot() { //重写资源路由 $registrar = new \App\Routing\ResourceRegistrar($this->app['router']); $this->app->bind('Illuminate\Routing\ResourceRegistrar', function () use ($registrar) { return $registrar; }); }
最后使用Route::resource('photo', 'PhotoController');
기본적으로 Laravel에서 생성된 라우팅 테이블은 다음과 같습니다. 다음과 같습니다:
프로젝트 요구 사항을 충족하려면 /photo/{ photo}/edit 경로를 /photo/edit/{photo}로 변경해야 합니다
Laravel 소스 코드를 쿼리한 결과 이 경로에 의해 생성된 메소드가 IlluminateRoutingResourceRegistrar.php에 있음을 발견했습니다. 이 클래스의 addResourceEdit 메소드를 재정의해야 합니다. addresourceed it the addresourceed methods는 다음 코드와 함께 새로운 클래스 approutingresourceregistrar.php를 만들어냅니다. = "jb51code">
rrreee마지막으로 Route::resource('photo', 'PhotoController');
를 사용하여 생성된 경로가 요구 사항을 충족합니다. 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
위 내용은 Laravel에서 리소스 라우팅 커스텀 URL을 다시 작성하는 구현 방법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!