Передача нескольких параметров в гиперссылке в 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.

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


person user7282    schedule 25.03.2015    source источник


Ответы (3)


При генерации 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 предоставляет этот параметр.

person vitalik_74    schedule 25.03.2015
comment
он все еще генерируется как история/создание?1%5Bid%5D=39&1%5Busr%5D=1 - person user7282; 25.03.2015
comment
В Html в наборе ['story/create', 'id' =>39,'usr'=>'11'], ? - person vitalik_74; 25.03.2015
comment
Теперь он создается как reg/create/39?usr=1 , мне нужно? быть удаленным - person user7282; 25.03.2015
comment
Я пробовал, и это работает нормально. посмотрите - yadi.sk/i/neiWnrkufW43J и yadi.sk/i/pSvwF5GSfW49Z и мой .htaccess yadi.sk/i/4jsoxNwffW4D9 - person vitalik_74; 25.03.2015
comment
Я не знаю, это похоже на create/39?usr=1 , может быть что-то связанное с генерацией гиперссылки с помощью Html::a() - person user7282; 25.03.2015
comment
Давайте продолжим обсуждение в чате. - person vitalik_74; 25.03.2015
comment
У меня это работает, это должно быть в первой строке правил, в конце он генерирует '?' Вы можете проверить это или найти лучшее решение. - person user7282; 25.03.2015
comment
После отправки вы можете получить данные с помощью: print_r(Yii::$app-›request-›get()['id']; и print_r(Yii::$app-›request-›get()[' уср']); - person Roby Sottini; 30.11.2018

создать 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
person Rahman    schedule 28.07.2016

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

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

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

Доступ к ним можно получить в URL-контроллере/действии/100/20.

person Shubham    schedule 07.12.2017