2015-03-25 10 views
9

Ich versuche, eine Hyperverbindung durch das Verfahren in http://www.yiiframework.com/doc-2.0/guide-helper-html.html#hyperlinks wie diesmehrere Parameter in einem Hyperlink in yii2 mit sauberem Urls Geben, :: Html a() sauber url doesnt erzeugt

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

ich erwähnt zu erzeugen uRL erhalten wie story/create/id/39/usr/11

wollen, aber es erzeugt als

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

ich die saubere uRL-Funktionalität aktiviert haben von yii2 wie

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

Wie kann das erreicht werden?

Antwort

22

Mit url Verwendung so erzeugen (siehe mehr 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 Eingang neue Regel:

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

     ), 

Output URL wie das sein wird:

story/create/39/11 

Und im Controller:

public function actionCreate($id, $usr) 

Und Yii2 bieten diesen Parameter. URL dynamisch

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

In urlManager Konfigurationsregeln

+0

es noch zugegriffen werden, wie Geschichte Erzeugung/erstellen? 1% 5Bid% 5D = 39 & 1% 5Busr% 5D = 1 – user7282

+0

In ' Html' im Set '['story/create', 'id' => 39, 'usr' => '11'],'? –

+0

Ich löschte 'Array'. –

1

erstellen:

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

Output URL wie das sein wird:

story/create/39/11 
0

Eine weitere nützliche Methode:

schreiben in URLManager-Regel s in Ihrem

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

Kann in url controller/action/100/20