Domanda

Ho bisogno di una regola per http://example.com/post/view/id/1 URL che verrà visualizzato in questo modo http://example.com/post/post_title. Invece del numero ID che desidero visualizzare il nome o il titolo del post.

La mia configurazione sembra così:

 'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(             
            //'<controller:\w+>/<id:\d+>'=>'<controller>/view',
            //'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            //'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
                    'showScriptName'=>false,
    ),
È stato utile?

Soluzione

Devi avere una regola che assomiglia a questa

'post/<post_title:\w+>'=>'postController/view/title/<post_title>',

Questo dice solo all'app di inoltrare le richieste che iniziano con un post/post_title sull'ActionView del post controller in cui $ _get ['title'] è impostato su post_title ...

Spero possa aiutare.

Altri suggerimenti

È una semplice regola

'post/<post_title:\w+>' => 'post/view'

Se hai bisogno di URL come questo http://example.com/post/some-title-with-hyphen

'post/<post_title:[-\w]+>' => 'post/view'

E hai bisogno di un'azione controller con argomento $ post_title

public function actionView($post_title) {
    ...

In default, YII ritira solo l'ID post, se si desidera visualizzare il titolo post, è necessario accedere al DB te stesso in una regola di classe URL personalizzata. C'è un esempio nel tutorial YII chiamato Utilizzando Classe-Rolle-Url-Rule

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top