수색…


소개

라우팅은 URL을 컨트롤러 에 매핑하는 프로세스입니다. Symfony에는 경로를 정의 할 수있는 강력한 라우팅 구성 요소가 있습니다.

Routing 구성 요소는 주석, YAML, XML 및 원시 PHP와 같은 여러 가지 구성 형식을 지원합니다.

매개 변수

매개 변수 세부
이름 경로 이름. 예 : book_show
통로 경로 (와일드 카드가 포함될 수 있음) 예 : /book/{isbn}
기본값 매개 변수의 기본값

단순 경로

YAML 사용 :

# app/config/routing.yml
blog_list:
    path:     /blog
    defaults: { _controller: AppBundle:Blog:list }

특수 효과 사용 :

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog", name="blog_list")
     */
    public function listAction()
    {
        // ...
    }
}

/blog URL에 대한 요청은 BlogController 내의 AppBundlelistAction() 메소드에 의해 처리됩니다.

자리 표시자가있는 경로

YAML 사용 :

# app/config/routing.yml
blog_show:
    path:     /blog/{slug}
    defaults: { _controller: AppBundle:Blog:show }

특수 효과 사용 :

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog/{slug}", name="blog_show")
     */
    public function showAction($slug)
    {
        // ...
    }
}

/blog/* 와 일치하는 URL이있는 요청은 BlogController 내의 AppBundleshowAction() 메소드에 의해 처리됩니다. 컨트롤러 동작은 메서드 인수로 자리 표시 자의 값을받습니다.

예를 들어,에 대한 요청 /blog/my-post 에 대한 호출 트리거 showAction() 인수와 $slug 값을 포함하는 my-post . 컨트롤러 액션은 그 인수를 사용하여, 예를 들어 데이터베이스에서 slug my-post 를 사용하여 블로그 게시물을 검색하여 자리 표시 자의 값에 따라 응답을 변경할 수 있습니다.

자리 표시 자의 기본값

누락 될 수있는 자리 표시자를 원할 경우 기본값으로 지정할 수 있습니다.

YAML 사용 :

# app/config/routing.yml
blog_list:
    path:      /blog/{page}
    defaults:  { _controller: AppBundle:Blog:list, page: 1 }
    requirements:
        page: '\d+'

특수 효과 사용 :

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"})
     */
    public function listAction($page = 1)
    {
        // ...
    }
}

이 예제에서 /blog/blog/1 URL은 모두 blog_list 경로와 일치하며 listAction() 메소드에 의해 처리됩니다. /blog 의 경우, listAction()$page 인수를 기본값 인 1 받습니다.



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