2013-06-04 9 views
0

Я борюсь с этой проблемой и не могу ее преодолеть.Zend 2 Framework Routing

То, что я хочу достичь, это маршрут, как это:/rolepermission [/: Идентификатор роли]/разрешения [/: permissionid] [/ действие /: действие]

В настоящее время я придумал что-то вроде этого:

 'rolepermission' => array(
      'type' => 'literal', 
      'options' => array(
       'route' => '/rolepermission', 
       'constraints' => array(), 
       'defaults' => array(
        'controller' => 'My\Controller\RolePermission', 
        'action' => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'rolepermissionroleid' => array(
        'type' => 'segment', 
        'options' => array(
         'route' => '/[:roleid]', 
         'constraints' => array(
          'roleid' => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'action' => 'detail', 
         ), 
        ), 
        'may_terminate' => true, 
        'child_routes' => array(
         'rolepermissionpermissions' => array(
          'type' => 'literal', 
          'options' => array(
           'route' => '/permissions', 
           'constraints' => array(), 
           'defaults' => array(
            'action' => 'index' 
           ), 
          ), 
          'may_terminate' => true, 
          'child_routes' => array(
           'rolepermissionpermissionid' => array(
            'type' => 'segment', 
            'options' => array(
             'route' => '/[:permissionid]', 
             'constraints' => array(
              'permissionid' => '[a-zA-Z][a-zA-Z0-9_-]*', 
             ), 
             'defaults' => array(
             ), 
            ), 
            'may_terminate' => true, 
            'child_routes' => array(
             'rolepermissionaction' => array(
              'type' => 'segment', 
              'options' => array(
               'route' => '/action/[:action]', 
               'constraints' => array(
                'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
               ), 
               'defaults' => array(
                'action' => 'index' 
               ), 
              ), 
              'may_terminate' => false, 
              'child_routes' => array(), 
             ), 
            ), 
           ), 
          ), 
         ), 
        ), 
       ), 
      ), 
     ), 

При переходе на/rolepermission/permissions я постоянно получаю «разрешения» для: roleid. Я ожидаю, что здесь ничего не будет заменено из-за того, что вы не пропустили роль. Что я делаю не так?

Спасибо заранее, веселит

+0

ive неиспользуемые маршруты таким образом, но «roleid» => '[a-zA-Z] [a-zA-Z0-9 _-] *', чтобы разрешить любые буквенно-цифровые или подчеркивание или дефис. действительно ли ваш столбец идентификаторов содержит эти символы? потому что я бы рискнул предположить, поэтому он предполагает, что вы входите в роль, когда вы этого не делаете. Вы можете попробовать и сделать это, написав все из них 1 на 1, затем слейте их потом. – mic

+0

Благодарим вас за советы. Роль - это буквенно-цифровой идентификатор, например: «Администратор». Он работает при определении маршрута как одного маршрута без детей («route» =>/rolepermission [/: roleid]/permissions [/: permissionid] [/ action /: action]), но мне нужен весь маршрут, определенный с детьми для правильное соответствие маршрута. – kinkee

ответ

1

Решена проблема временно адаптации ребенка маршрут по «rolepermissionpermissions» следующим образом:

'rolepermission' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/rolepermission', 
       'constraints' => array(), 
       'defaults' => array(
        'controller' => 'My\Controller\RolePermission', 
        'action' => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'rolepermissionroleid' => array(
        'type' => 'segment', 
        'options' => array(
         'route' => '/:roleid', 
         'constraints' => array(
          'roleid' => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'action' => 'detail' 
         ), 
        ), 
        'may_terminate' => true, 
        'child_routes' => array(
         'rolepermissionpermissionid' => array(
          'type' => 'segment', 
          'options' => array(
           'route' => '[/permission/:permissionid]', 
           'constraints' => array(
            'permissionid' => '[a-zA-Z][a-zA-Z0-9_-]*', 
           ), 
           'defaults' => array(
            'action' => 'detail', 
           ), 
          ), 
          'may_terminate' => true, 
          'child_routes' => array(
           'rolepermissionaction' => array(
            'type' => 'segment', 
            'options' => array(
             'route' => '/action/:action', 
             'constraints' => array(
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
             ), 
             'defaults' => array(
              'action' => 'detail' 
             ), 
            ), 
            'may_terminate' => true, 
            'child_routes' => array(), 
           ), 
          ), 
         ), 
        ), 
       ), 
      ), 
     ), 

Хотя это действительно не самое лучшее решение, это работает в настоящее время.