수색…


소개

경로는 URL을 컨트롤러 클래스의 액션 (함수)에 매핑하는 것과 같습니다. 다음 주제에서는 YAML 또는 주석을 사용하여 라우트를 통해 매개 변수를 Controller 클래스에 전달하여 라우트 작성에 중점을 둡니다.

비고

Symfony 프레임 워크가 생성 한 것을 보는 것이 유용합니다.이 프로그램은 특정 애플리케이션의 모든 경로를 볼 수있는 도구를 제공합니다.

Symfony Doc 에서 (셸에서) 다음을 사용하십시오 :

php bin/console debug:router

또한 라우팅 메뉴의 Framework Profiler에서 관련 경로 정보를 모두 볼 수 있습니다. Symfony 프로파일 러

YAML을 사용한 라우팅

라우팅 설정은 app/config/config.yml 파일에 기본적으로 app/config/routing.yml 파일로 포함되어 있습니다.

여기에서 번들의 고유 한 라우팅 구성에 연결할 수 있습니다

# app/config/routing.yml

app:
    resource: "@AppBundle/Resources/config/routing.yml"

또한 여러 응용 프로그램 전역 경로를 포함 할 수도 있습니다.

자신의 번들에서는 두 가지 목적을 수행하는 경로를 구성 할 수 있습니다.

  • 요청과 일치하여 요청에 대해 올바른 조치가 호출됩니다.
  • 이름 및 경로 매개 변수에서 URL 생성.

다음은 YAML 경로 구성의 예입니다.

# src/AppBundle/Resources/config/routing.yml

my_page:
    path: /application/content/page/{parameter}
    defaults:
        _controller: AppBundle:Default:myPage
        parameter: 42
    requirements:
        parameter: '\d+'
    methods: [ GET, PUT ]
    condition: "request.headers.get('User-Agent') matches '/firefox/i'"

경로는 이름 my_page 하고, 호출 myPageActionDefaultController 에서 AppBundle 요청하는 경우. parameter 에는 기본값이있는 매개 parameter 가 있습니다. 이 값은 정규 표현식 \d+ 와 일치 할 때만 유효합니다. 이 라우트의 경우 GETPUT HTTP 메소드 만 허용됩니다. condition 은 User-Agent 헤더가 firefox와 일치하지 않으면 경로가 일치하지 않는 예제의 표현식입니다. expression에 전달되는 두 개의 변수 ( context (RequestContext)와 request (Symfony Request))를 활용하여 표현식에 필요한 복잡한 논리를 수행 할 수 있습니다.

매개 변수 값이 10 인 생성 된 라우트는 /application/content/page/10 과 같을 수 있습니다.

특수 효과를 사용한 라우팅

라우팅 설정은 app/config/config.yml 파일에 기본적으로 app/config/routing.yml 파일로 포함되어 있습니다.

여기에서 라우팅 구성을 주석 처리 한 컨트롤러에 연결할 수 있습니다.

# app/config/routing.yml

app:
    resource: "@AppBundle/Controller"
    type:     annotation

자신의 번들에서는 두 가지 목적을 수행하는 경로를 구성 할 수 있습니다.

  • 요청과 일치하여 요청에 대해 올바른 조치가 호출됩니다.
  • 이름 및 경로 매개 변수에서 URL 생성.

다음은 주석이 달린 경로 구성의 예입니다.

// src/AppBundle/Controller/DefaultController.php

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;

/**
 * @Route("/application")
 */
class DefaultController extends Controller {
    /**
     * @Route("/content/page/{parameter}",
     *        name="my_page",
     *        requirements={"parameter" = "\d+"},
     *        defaults={"parameter" = 42})
     * @Method({"GET", "PUT"})
     */
    public function myPageAction($parameter)
    {
        // ...
    }
}

컨트롤러에는 접두사 경로가 주석으로 지정되어 있으므로이 컨트롤러의 구성된 모든 경로 앞에 접두사가 사용됩니다.

구성된 경로의 이름은 my_page 이며 요청시 myPageAction 함수를 호출합니다. parameter 에는 기본값이있는 매개 parameter 가 있습니다. 이 값은 정규 표현식 \d+ 와 일치 할 때만 유효합니다. 이 라우트의 경우 GETPUT HTTP 메소드 만 허용됩니다.

매개 변수가 함수 매개 변수로 액션에 삽입됩니다.

매개 변수 값이 10 인 생성 된 라우트는 /application/content/page/10 과 같을 수 있습니다.

강력한 휴식 경로

일반적으로 라우팅을 사용하여 HttpFoundation Component에서 요청 및 응답 매개 변수를 처리 한 라우팅 구성 요소 를 사용하여 요청을 매핑 할 수 있습니다.

또한 FOSRestBundle을 사용하여 라우팅 구성 요소의 기본 기능을 확장하여 사용자 지정 라우트 매개 변수를 만들 수 있습니다.

이는 REST 라우트를 작성하는 데 유용하며 요청 (및 응답)에서 XML 또는 json 파일과 같은 구조화 된 데이터를 전송하는 방법을 지정하는 데 유용합니다.

자세한 내용은 FOSRestBundle Doc 를 참조하십시오. 특히이 주석은 다음과 같습니다.

use FOS\RestBundle\Controller\Annotations\FileParam;

/**
 * @FileParam(
 *   name="",
 *   key=null,
 *   requirements={},
 *   default=null,
 *   description="",
 *   strict=true,
 *   nullable=false,
 *   image=false
 * )
 */


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow