2014-10-09 3 views
1

을 반환하지 name은 controller, index는 action 이름, delete는 레코드의 id를 가져 오는 매개 변수입니다. 내가 코드의이 부분을 사용하고이 링크를 만들려면 :ZF2 fromRoute 내가 이런 링크를 만들려고하고 기본 작업 이름

 $delUrl = $this->url()->fromRoute('management-users', array(
       'controller' => 'users', 
       'action' => 'index', 
       'delete' => $siteData['id'], 
     )); 

내 설정은 다음과 같다 :

somesite.com/management/ :

'router' => array(
    'routes' => array(
     'management-index' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/management[/:controller][/:action][/delete/:delete][/:id]', 
       'constraints' => array( 
        'delete' => '[0-9]+' , 
        'id' => '[0-9]+' 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'Management\Controller', 
        'controller' => 'Index', 
        'action'  => 'index' 
       ), 
      ), 
     ), 

    ), 
), 

결과는이입니다 사용자/삭제/10

이 기능은 작업 이름을 생략하기 때문에 내 기본 동작을 누른 다음 작업 이름으로 삭제 가져옵니다 그리고 마침내 404 오류가 발생합니다. 보시다시피 링크에서 구문 "delete"를 생략하지 못하게하는 매개 변수 "id"가 있습니다. url에서 "delete"를 생략하면 ZF2는 "delete"가 아닌 "id"로 입력됩니다. 내 기본 동작을 변경할 수 없습니다. URL에 작업 이름을 입력하도록 ZF2에 알리는 방법이 있습니까?

'router' => array(
    'routes' => array(
     'management-users' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/management[/:controller][/:action][/delete/:delete][/:id]', 
       'constraints' => array( 
        'delete' => '[0-9]+' , 
        'id' => '[0-9]+' 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'Management\Controller', 
        'controller' => 'Users', 
        'action'  => 'index' 
       ), 
      ), 
     ), 

    ), 
), 

돈 '

+0

버그 신고 : https://github.com/zendframework/zf2/issues/6744 – Abadis

답변

0

하는 "경영 지수"에서 경로 키의 이름을 바꿉니다 "관리 사용자"는 "사용자" 이 때문에 경로를 읽는 것 같은 느낌을 "인덱스"에서 컨트롤러 이름을 변경 하기 이 변경을 반영하기 위해 컨트롤러 정의 (호출 가능 또는 공장)를 변경하는 것을 잊지 마십시오.

+0

변경해야하는 이유는 무엇입니까? 당신의 대답은 부적절한 것 같습니다. – Abadis