2014-11-25 4 views
0

어떻게 젠드 프레임 워크 2에서 URL을 구문 분석 할 수 있습니까?젠드 프레임 워크 2 URL 구문

내 링크 내 module.config.php이

<?php return array(
'router' => array(
    'routes' => array(

     'read' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/read', 
       'defaults' => array(
        '__NAMESPACE__' => 'Read\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'wildcard' => array(
        'type' => 'Zend\Mvc\Router\Http\Wildcard', 
        'options' => array(
         'key_value_delimiter' => '/', 
         'param_delimiter' => '/', 
        ), 
       ), 
      ), 
     ), 
    ), 
), 

'controllers' => array(
    'invokables' => array(
     'Read\Controller\Index' => 'Read\Controller\ReadController' 
    ), 
), 
'view_manager' => array(

    'template_path_stack' => array(
     __DIR__ . '/../view', 
    ), 
),); 

내 전체 URL과 같은

것은

이 lhost/test.net/읽기/ID/쿼티

입니다

그리고 "qwerty"부분을 얻으려면 zf2로 가져올 수있는 방법이 있습니까? 내가 $this->serverUrl(true);으로 전체 URL을 얻을 수 있지만, 마지막 부분은 (그것을 구문 분석 싶어 사용 PHP를 해달라고 jsut PIN이 할 수 없습니다 수 있습니다 컨트롤러에서 가능

+0

와일드 카드 경로 유형이 [사용되지]입니다 (https://zf2.readthedocs.org/en/latest를 호출 /modules/zend.mvc.routing.html#zend-mvc-router-http-wildcard-deprecated) 잠시 전에 보안 문제가 발생할 수 있습니다. 와일드 카드 대신 세그먼트 경로 유형을 사용해야합니다. 내가 경로의 유형을 넣을 때 – edigu

답변

0

OK I 경우 누군가가 이것을 필요로 할 때를 대비하여이 대답을 얻었다.

모듈 설정 :

return array(
    'router' => array(
     'routes' => array(
      'read' => array(
       'type' => 'Literal', 
       'options' => array(
        'route' => '/read/id', /* Need close slash '/' */ 
        'defaults' => array(
         '__NAMESPACE__' => 'Read\Controller', 
         'controller' => 'Index', 
         'action'  => 'index', 
        ), 
        'constraints' => array(
         'news' => '[A-Z]+', /* Mask for first paremeter need different from second parameter */ 
        ) 
       ), 
       'may_terminate' => true, 
       'child_routes' => array(
        'default' => array(
         'type' => 'Segment', 
         'options' => array(
          'route' => '/[:news]', 
          'constraints' => array(
           'news' => '.*', /* Mask for first parameter need different from second parameter */ 
          ), 
          'key_value_delimiter' => '/', 
          'param_delimiter' => '/', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
); 

콘트롤 :

$news = $this->params()->fromRoute('news'); 

return new ViewModel(array('news' => $news)); 

와 PHTML 파일

그냥 $news

0

루트

... 
    'read' => array(
     'type' => 'Segment', 
     'options' => array(
      'route' => '/read[/:first][/:second][/]', /* Need close slash '/' */ 
      'defaults' => array(
       '__NAMESPACE__' => 'Read\Controller', 
       'controller' => 'Index', 
       'action'  => 'index', 
       'first'   => 'default', 
       'second'  => 'default' 
      ), 
      'constraints' => array(
       'first' => '[0-9]+', /* Mask for first paremeter need different from second parameter */ 
       'second' => '[a-z]+' /* Mask for second parameter need different from first parameter */ 
      ) 
     ) 
... 

...Action() 
... 
    $this->params('first'); 
    $this->params('second'); 
... 
+0

i는 404 페이지에 – Night5talker

+0

쇼 예외가 – newage

+0

"A 404 오류가 페이지를 찾을 수 없습니다 발생했습니다. 요청 된 URL을 라우팅과 일치 할 수 없습니다. 사용할 수 예외 없음"하시기 바랍니다 오류 404 – Night5talker