yii2clean-urlsyii-url-manager

Passing multiple parameters in a hyperlink in yii2 with clean urls, Html::a() doesnt generate clean url


I am trying to generate a hyper link by the method mentioned in http://www.yiiframework.com/doc-2.0/guide-helper-html.html#hyperlinks like this

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

I want to get url like story/create/id/39/usr/11

But it is generating as

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

I have enabled the clean url functionality of yii2 like

  '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.

How this can be achieved?


Solution

  • With generate url use like that (see more 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'])
    

    In urlManager input new rule:

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

    Output url will be like that:

    story/create/39/11
    

    And in controller:

    public function actionCreate($id, $usr)
    

    And Yii2 provide this parameter.