2016-10-15 2 views
-2

누군가 설명 할 수 있습니까? 내가 심포니 알고 어떻게합니까 의미 URL을 그 /blogs/blog-title = /blogs/{title} 어떻게이 routing.yml에 URL을 구문 분석하고 blog-title가 URL의 동적 매개 변수임을 알게!symfony의 URL paser는 어떻게 작동합니까?

답변

2

실제로 몇 단계가 소요됩니다. 약간의 예제 코드를 작성했습니다. 기능 코드이 아닙니다.

$requestArray = explode('/', $_SERVER['REQUEST_URI']); 

이제 우리는 한 두 배열의 비교 : 전역 $ _SERVER와 함께 제공되는 REQUEST_URI에 대한

$route = '/blogs/{title}'; 
$routeArray = explode('/', $route); 

같은 일 :에

우선은 조각에 경로를 파괴하는 것입니다 요소 별 요소 :

if(count($routeArray) != count($requestArray)) { 
    return FALSE; // the route does not match 
} 

for($i = 0 ; $i < count($routeArray) ; $i++) 
{ 
    if($routeArray[$i][0] != '{' && $routeArray[$i] != $requestArray[$i]) { 
     return FALSE; // the route does not match 
    } 
} 

return TRUE; // still here? route matches! 

처음 실행되는 for 루프는 'blogs'sta rts와 '{'또는 'blogs'가 'blogs'와 같은 경우.

두 번째 for 루프는 '{title}'이 '{'로 시작하거나 '{title}'이 'blog-title'과 같은지 비교합니다.

이 외에도 Symfony 라우터는 REQUEST_METHOD가 유효한지 확인합니다. 예 : GET, POST, PUT, DELETE.

+0

Thnx 지금은 분명히 내가 찾고있는 것이 분명합니다. – SlimenTN

0

안녕 Slimen 나는 내 대답은 당신을 도울 것입니다 희망 :

그것은이 작업을 수행하는 라우터 구성 요소입니다. 당신이 응용 프로그램의 웹 페이지에 액세스하려고하면

:

커널은 routing.yml 파일을 구문 분석하는 라우터 구성 요소에 부탁드립니다. 따라서 라우터는 현재 URL을 routing.yml에 정의 된 경로와 일치 시키려고합니다.

라우터가 routing.yml의 경로 정의와 일치하면 라우터는 실행할 라우트의 매개 변수 (실행하려는 컨트롤러 및 실행될 컨트롤러에 제공 할 매개 변수 (newsId 또는 userId 등)).

라우터가 routing.yml에서 경로 정의를 구문 분석하면 수집 된 정보를 커널에 제공합니다.

이제 커널은 실행할 컨트롤러와 해당 컨트롤러에 지정할 매개 변수를 알고 있습니다.

+0

대답은 Thnx이지만 저는 암기에 대해 물었습니다. 라우터가 url을 구문 분석하고 url의 정적 측면과 동적 측면을 정의하는 방법. – SlimenTN

관련 문제