3

次のような URL があります。

<controller>/<action>/param/value

そして、私はそれを次のようにしたい:

param/value

どうすれば達成できますか?

このルールを試してみましたが、大丈夫かどうかわかりません (コントローラーはアカウントで、アクションはインデックスです)。

'user/<user:.*>' => 'account/index/user/test'
4

2 に答える 2

2

私があなたの質問を正しく理解している場合、次のような URL を処理する必要があります。

mysite.domain/user/username123

そして、AccountController の actionIndex を param User で呼び出しますこれ(この場合) "username123"に等しくなります。

この場合、以下のルールを試すことができます。

'user/<user:.*>' => 'account/index/<user>'

ただし、アクションが次の場合は、宣言を変更する必要があるかもしれません。

function actionIndex($user){
    // code
}
于 2012-06-27T13:53:53.547 に答える
1

yii は署名の一致しないアクションを [優雅に] 処理しないため、params をアクション署名に入れることは避けたいと思います。アクションが呼び出されない理由を追跡することは、 $_GET が設定されていない理由を判断するよりも難しいでしょう...署名に $user を追加する代わりに、次のようにすることをお勧めしますあなたの行動に従います。

//will always run on /user/<USER:.*>
function actionIndex(){
    $user = isset($_GET['user'])?$_GET['user']:NULL;
    if(!is_null($user)){
        //your user specific account action..
    }else{
        //handle your error gracefully..
    }
}

このアプローチにより、アクションの用途が広がります。URL ルールは次のようになります。

'user/<user:.*>' => 'account/index/user/<user>' //user is defined as a get...

&&幸せなコーディングに役立つことを願っています!

于 2012-07-02T14:39:04.647 に答える