it-swarm.com.ru

Передавая несколько параметров в гиперссылке в yii2 с чистыми URL-адресами, Html :: a () не генерирует чистый URL-адрес

Я пытаюсь создать гиперссылку по методу, указанному в http://www.yiiframework.com/doc-2.0/guide-helper-html.html#hyperlinks вот так 

 Html::a('<b>Register</b>', 
    ['story/create', array('id' =>39,'usr'=>'11')], 
    ['class' => 'profile-link'])

Я хочу получить URL, как story/create/id/39/usr/11

Но это генерирует как 

story/create?1%5Bid%5D=39&1%5Busr%5D=1

Я включил функцию чистого URL-адреса yii2, как

  'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'rules' => array(
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
        ], also.

Как этого можно достичь?

10
user7282

С генерировать url используйте вот так (см. Больше http://www.yiiframework.com/doc-2.0/guide-helper-url.html ):

Html::a('<b>Register</b>', 
        ['story/create', 'id' =>39,'usr'=>'11'], 
        ['class' => 'profile-link'])

В urlManager введите новое правило:

rules' => array(
  ....
  'story/create/<id:\d+>/<usr:\d+>' => 'story/create',

        ),

Выходной URL будет таким:

story/create/39/11

И в контроллере:

public function actionCreate($id, $usr)

И Yii2 предоставит этот параметр.

24
vitalik_74

создать URL динамически 

Html::a('<b>Register</b>', 
    ['story/create', 'id' =>39,'usr'=>'11'], 
    ['class' => 'profile-link'])

В правилах настройки urlManager:

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
             '<controller:\w+>/<id:\d+>' => '<controller>/view',            
             '<controller:\w+>/<action:\w+>/<id:\d+>/<usr:\d+>' => '<controller>/<action>', 
        ],
    ],

Выходной URL будет таким:

story/create/39/11
1
Rahman

Еще один полезный метод:

Напишите в правилах urlManager в своем 

'rules'=>array('/controller/action/<limit>/<offset>'=>'/controller/action/'),

Доступ к контроллеру URL/action/100/20

0
Shubham