>백엔드 개발 >PHP 튜토리얼 >Laravel에서 리소스 라우팅 커스텀 URL을 다시 작성하는 구현 방법에 대해

Laravel에서 리소스 라우팅 커스텀 URL을 다시 작성하는 구현 방법에 대해

不言
不言원래의
2018-06-13 11:49:221813검색

이 글에서는 주로 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에서 생성된 라우팅 테이블은 다음과 같습니다. 다음과 같습니다:

작업 경로 작업 경로 이름 GET /photo index photo.index GET /photo/create create photo.create POST /photo store photo.store GET /사진/{사진} 쇼 photo.show GET /photo/{사진 }/편집 편집 photo.edit PUT/PATCH /photo/{사진 } 업데이트 photo.update 삭제 /photo/{ photo} destroy photo.destroy

프로젝트 요구 사항을 충족하려면 /photo/{ photo}/edit 경로를 /photo/edit/{photo}로 변경해야 합니다

implementation steps

Laravel 소스 코드를 쿼리한 결과 이 ​​경로에 의해 생성된 메소드가 IlluminateRoutingResourceRegistrar.php에 있음을 발견했습니다. 이 클래스의 addResourceEdit 메소드를 재정의해야 합니다. addresourceed it the addresourceed methods는 다음 코드와 함께 새로운 클래스 approutingresourceregistrar.php를 만들어냅니다. = "jb51code">

rrreee

마지막으로 Route::resource('photo', 'PhotoController');를 사용하여 생성된 경로가 요구 사항을 충족합니다. 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

🎜관련 권장 사항: 🎜🎜🎜Laravel 프레임워크 라우팅 및 컨트롤러의 바인딩 작업 정보🎜🎜🎜🎜🎜Laravel 프레임워크 라우팅 설정🎜🎜🎜🎜🎜🎜🎜🎜

위 내용은 Laravel에서 리소스 라우팅 커스텀 URL을 다시 작성하는 구현 방법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.