-1

I'm using yii2 and i want url to be this way: example: backend.dev/ads/browse/city/london

My code is this(backend/config/main.php):

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

And my link is:

echo Html::a('<h4>'.$cities[$i].'</h4>', ['/ads/browse', 
             'city'=>$cities[$i]], ['class'=>'btn buttonCity']);

But the output is this: backend.dev/ads/browse?city=london I want ? to disappear, help me please.

Prakash Pazhanisamy
  • 997
  • 1
  • 15
  • 25
MHF
  • 211
  • 2
  • 14

2 Answers2

1

\d+ means it expects number but you gave london.

Change

'<controller:\w+>/<action:\w+>/<city:\d+>' => '<controller>/<action>'

to

'<controller:\w+>/<action:\w+>/<city:\w+>' => '<controller>/<action>'
Bizley
  • 17,392
  • 5
  • 49
  • 59
0

Thanks to @Bizely I have to make these changes:

'<controller:\w+>/<action:\w+>/<city:\d+>' => '<controller>/<action>'

change to:

'<controller:\w+>/<action:\w+>/<city:\w+>' => '<controller>/<action>'

My carelessness!

Stéphane Bruckert
  • 21,706
  • 14
  • 92
  • 130
MHF
  • 211
  • 2
  • 14