2013-04-14 5 views
0

ZF2와 함께 작업 중이며 콜론 구분 기호를 사용하는 경로 구성을 설정하려고합니다.ZF2 콜론 구분 기호가있는 경로

예를 들어, 웹 주소는 www.example.com/namespace:subject 일 수 있으며 두 개의 변수를 사용하여 특정 컨트롤러로 보내려고합니다. 콜론 ":"은 세그먼트의 특수 문자이므로 Regex를 사용하려고합니다. 이것을 할 수있는 좋은 방법이 있습니까?

'dataReqs' => array(
    'type' => 'regex',  
    'options' => array(
     'regex' => '/(?<namespace>[^:]+).(?<subject>[a-zA-Z0-9_-]+)', 
     'defaults' => array(
      'controller' => 'Application\Controller\Data', 
      'action'  => 'get', 
     ), 
     'spec' => '/%namespace%:%subject%', 
    ), 
), 

편집 : 여기 내 경로 구성은 내가 접두사로 콜론을 사용하려면 : 자원 형식은 일반적으로 RDF 구문 (http://www.w3.org/TR/2007/PR-rdf-sparql-query-20071112/#QSynIRI)에 사용됩니다. 예를 들어 http://dbpedia.org/data/Semantic_Web과 @prefix dbp : http://dbpedia.org/resource/ 같은 긴 URI는 dbp : Semantic_Web을 사용하여 문서에서 참조 할 수 있습니다. 따라서 Linked Data 서버의 경우 요청을 보내고 접두어 (네임 스페이스)와 리소스 이름을 포함 할 수 있습니다. 예 : http://myserver.com/dbp:Semantic_Web. 세그먼트 조합/네임 스페이스/리소스를 지금 사용하고 있지만 접두사가있는 경로를 처리하는 것이 좋습니다 : 리소스 구문.

답변

0

나는 kormik에 동의하는 경향이 있습니다. 왜 그런 방식으로 URL을 지정하려고합니까? 기본 동작에 어떤 문제가 있습니까?

www.example.com/namespace/subject

예 :

www.example.com/somenamespace/10

또는 :

www.exmple.com/namespace/namespace/subject/subject

예를 들어

www.example.com/namespace/somenamespace/subject/10

당신은 쉽게과 같이 컨트롤러에이 매개 변수를 잡아 수 있습니다

$ns = $this->params()->fromRoute('namespace',0); 
$subject = (int) $this->params->fromRoute('subject',0); 

또한 경로 설정을 수정해야합니다.