0

この種の配列を持つことは可能ですか:

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

            '/admin' => '/admin/home',
            '/admin/<controller:\w+>' => '/admin/<controller>',
            '/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>',
            '/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>',
        ),
    ),

データベース テーブルから読み込まれますか?

理由:ベース コントローラーを使用しないように、カスタムカテゴリ、ページ、および投稿ベースを定義する CMS を作成しています。

例: 私の Pages コントローラーは PagesController で、URL マネージャーで次のようにルールを作成できます。

/pages/some-page-alias

私は変更できるようにしたい/pages//categories/そして/posts/ローカライズされたものに変更したい、つまりボスニア語で変更できるようにしたい:

/kategorije/ => /categories/,
/stranice/ => /pages/,
/clanci/ => /posts/,

これに対する解決策はありますか、どのように行うことができますか?

ところで、私はわからないので何も試していません...

4

2 に答える 2

1

これを簡単に行うことができます:

'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'urlFormat' => 'path',
        'rules' => array(
            'kategorije/<id:\d+>' => 'category/view',
            'kategorije/<action:\w+>/<id:\d+>' => 'category/<action>',
            'kategorije/<action:\w+>' => 'category/<action>',

            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',

            '/admin' => '/admin/home',
            '/admin/<controller:\w+>' => '/admin/<controller>',
            '/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>',
            '/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>',
        ),
    ),

URLManager は、最初にリストされたものを優先します。したがって、標準ルールの上にカスタム ルールを配置すると、それらのルールが最初に実行されます。適用されるルールが見つかると、ブレイクアウトします。

于 2013-06-28T16:01:45.127 に答える
0

私に関しては、あなたの質問は明確ではありません。

配列をDBに保存したい場合は、serialize前にそれを実行することで実行できます。

同じコントローラーを指す複数の名前が必要な場合は、次のようなルールを使用できます。

array(
     '<_c:(stranica|page)>/<id:\d+>'=>'myController/view',
)

この場合、いずれかの URL

http://example.com/stranica/123
http://example.com/page/123

要求された場合、それは

http://example.com/myController/view?_c=stranica&id=123
http://example.com/myController/view?_c=page&id=123

によると。API のCUrlManagerの例を参照してください。

于 2013-06-28T16:43:06.963 に答える