2015-11-09 4 views
1

Я хочу сгенерировать URL-адреса, которые могут обрабатывать несколько параметров следующим образом.Несколько переменных, которые должны быть переданы в URL-адресе - Yii2

www.mysite.com/index.php/controller/param1/param2/param3/param4/mySlug 

Но все-таки иметь возможность быть гибкими и передать меньше информации

www.mysite.com/index.php/controller/param1/parama/my_slug_2 

Мы могли бы предположить, что всегда слизняк в конце концов, если что делает это проще. Есть ли что-нибудь в Yii2 urlManager, я могу это реализовать.

ответ

1

Просто настроить правило со значениями по умолчанию ваших Params, как это:

'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'rules' => [ 
      [ 
       'pattern' => 'test/<param1:\d+>/<param2:\d+>/<param3:\d+>/<param4:\d+>/<slug>', 
       'route' => 'site/test', 
       'defaults' => [ 
        'param1' => null, 
        'param2' => null, 
        'param3' => null, 
        'param4' => null, 
       ] 
      ] 
     ] 
    ], 

Все параметры, которые имеют значение по умолчанию не являются обязательными и могут быть пропущены. Вот примеры поведения:

http://yii2.local/test/slug:

skipped.array (size=5) 
    'param1' => null 
    'param2' => null 
    'param3' => null 
    'param4' => null 
    'slug' => string 'slug' (length=4) 

http://yii2.local/test/2/4/slug

array (size=5) 
    'param1' => string '2' (length=1) 
    'param2' => string '4' (length=1) 
    'param3' => null 
    'param4' => null 
    'slug' => string 'slug' (length=4) 
+0

Это выглядит хорошо, вернется после внедрения, чтобы вы знаете, если он работал. – ahervin

+0

@ahervin Вам это удалось? – SilverFire

+0

Я сделал заметку о задаче обновить этот ответ при реализации. Простите за опоздание. – ahervin

Смежные вопросы