2015-03-25 7 views
9

Próbuję wygenerować hiperłącze według metody wymienionej w http://www.yiiframework.com/doc-2.0/guide-helper-html.html#hyperlinks jak tenPrzekazywanie wielu parametrów w hiperłącze w yii2 czystych adresów URL, HTML :: a() robi generować czysty adresu URL

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

I aby uzyskać url jak story/create/id/39/usr/11

Ale to jest generowanie jak

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

mam włączony czystą funkcjonalność url yii2 jak

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

Jak można to osiągnąć?

Odpowiedz

22

Z generować url użycie takiego (zobacz więcej 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']) 

W wejściowego urlManager nowej reguły:

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

     ), 

url wyjście będzie tak:

story/create/39/11 

Oraz w kontrolerze:

public function actionCreate($id, $usr) 

I Yii2 zapewniają ten parametr.

+0

wciąż jest generowanie jak historia/tworzyć? 1% 5Bid% 5D = 39 & 1% 5Busr% 5D = 1 – user7282

+0

W ' Html' w zestawie '['story/create', 'id' => 39, 'usr' => '11'],'? –

+0

Usunąłem 'tablicę'. –

1

tworzyć URL dynamicznie

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

W urlManager zasad config:

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

url wyjście będzie tak:

story/create/39/11 
0

Inna przydatna metoda:

Zapis w zasada urlManager w twoich

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

można korzystać w kontroler url/działania/100/20