2 Stimmen

Yii saubere URL mit ID und Namen

Ich möchte, dass meine URLs folgendes Muster haben:

http://example.com/controller/view_id/title_name, wie bei SO:

http://stackoverflow.com/question/1/title

Config.php:

'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'appendParams' => true,
        'rules'=>array(
            'user//'=>array('user/view', 'caseSensitive'=>false),
            '//'=>'/view',
            '//'=>'/',
            '/'=>'/',
        ),
    )

UserController:

public function actionView($id)
{
   $this->render('view', array(
     'model' => $this->loadModel($id),
   ));
}

Ich versuche, user/view/1 auf user/1/my_username umzuleiten. Die URL user/1/username leitet mich auf Fehler 400 ungültige Anfrage weiter. Was fehlt mir?

2voto

unknownbits Punkte 2835

Wenn Ihr Benutzer- und Frage-Controller die Aktion view haben. Hier sollte view der Name der Aktion sein.

Versuchen Sie dies:

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'appendParams' => true,
     'caseSensitive'=>false,//hier Groß- und Kleinschreibung verwenden 
    'rules'=>array(
        '//'=>'/view',
        '//'=>'/',
        '/'=>'/',
    ),
)

Wenn Ihre URL so aussieht

http://stackoverflow.com/question/1/title

Wenn Sie diese URL aufrufen, wird in der main.php diese Zeile Ihre URL lesen.

'//'=>'/view',
//view_id und title_name können Sie umbenennen.

Es funktioniert so:

 =frage
 =1
 =title

und Sie werden automatisch zur 's function actionView() weitergeleitet. Sie können die URL-Werte in $_GET['view_id'] und $_GET['title_name'] in actionView() abrufen.

Sie müssen dies tun:

public function actionView() 
{ 
   $this->render('view', array( 'model' => $this->loadModel($_GET['view_id']))); 
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X