58. 라우팅 매개변수

1822 단어
  • 라우팅에서 일부 URL 세션을 캡처해야 하는 경우도 있습니다.예를 들어, URL에서 사용자의 ID를 캡처하여 라우팅 매개변수를 정의하여 다음을 수행할 수 있습니다
  • Route::get('user/{id}', function ($id) {
        return 'User '.$id;
    });
    

    필요에 따라 라우팅에서 여러 매개변수를 정의할 수도 있습니다.
    Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
        //
    });
    

    라우팅된 매개변수는 일반적으로 {} 내에 배치되며 매개변수 이름은 문자만 사용할 수 있으며 라우팅 매개변수는 - 기호를 포함할 수 없으며 필요한 경우 밑줄을 사용할 수 있습니다 (_)대신
    루트 매개 변수는 순서대로 루트 리셋이나 컨트롤러에 주입되며, 리셋이나 컨트롤러의 매개 변수 이름에 영향을 받지 않습니다.
  • 때때로 루트 파라미터를 지정해야 할 수도 있지만, 이 파라미터가 선택할 수 있기를 바랍니다.너는 매개 변수 뒤에 덧붙일 수 있니?태그는 구현되지만 라우팅의 해당 변수에 기본값이 있는지 확인합니다
  • Route::get('user/{name?}', function ($name = null) {
        return $name;
    });
    
    Route::get('user/{name?}', function ($name = 'John') {
        return $name;
    });
    
  • 루트 실례의where 방법으로 루트 매개 변수의 형식을 제약할 수 있습니다.where 메서드는 매개변수 이름과 매개변수를 구속하는 방법을 정의하는 정규 표현식을 수락합니다
  • Route::get('user/{name}', function ($name) {
        //
    })->where('name', '[A-Za-z]+');
    
    Route::get('user/{id}', function ($id) {
        //
    })->where('id', '[0-9]+');
    
    Route::get('user/{id}/{name}', function ($id, $name) {
        //
    })->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
    
  • 만약에 특정한 루트 매개 변수가 같은 정규 표현식의 제약을 따르기를 원한다면pattern 방법을 사용하여 Route Service Provider의boot 방법에서 이러한 모델을 정의하십시오
  • /**
     *  , pattern  。
     *
     * @return void
     */
    public function boot()
    {
        Route::pattern('id', '[0-9]+');
    
        parent::boot();
    }
    

    정의가 완료되면 매개변수 이름을 사용하는 모든 라우트에 자동으로 적용됩니다.
    Route::get('user/{id}', function ($id) {
        //   {id}  ...
    });
    

    좋은 웹페이지 즐겨찾기