3

article という名前のモジュールがあります。次のフォルダーに存在します。

- protected
      - modules
           - article
                 - controllers
                   ArticleController.php
                 - views
                       -article
             articleModule.php

私はCMSを作っているので。コントローラーやアクションへの直接リンクは使用しないことにしました。これは、example.com/article/article/index への呼び出しを意味します。うまくいきません。CMS は URL リクエストをページとして扱うためです。(そのため、'article' と 'article' を親とする 'index' というページを探します。そのようなページは存在しません。

CMS は有効なページのブロックをロードし、このブロックの 1 つに対して記事モジュールを実行したいと考えています。使ってみた

Yii::app()->runController($route). 

ただし、これにはルートが必要です。

モジュールが URL example.com/article/article に移動するのと同じように機能するように、このようなモジュールを実行することは可能ですか?

または、それが不可能な場合。ページを処理できるように Url Manager をセットアップするにはどうすればよいですか? きれいな URL で。ここではいくつかの例を示します。

example.com/join_us  
example.com/join_us/contact 
example.com/news/ 
example.com/countries/us/healthcare 

上記は、ユーザーが作成および変更できるページです。私は長い間これと格闘してきました。普通なら簡単なことでしょう。しかし、Yii はそれを非常に困難にします。ほとんどの場合、コントローラーまたはモジュールがルートへのリンクにリンクされているためです。

4

2 に答える 2

1

これをメイン構成に入れます:

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

そしてこれはあなたの.htaccessファイルにあります:

RewriteEngine on

ディレクトリまたはファイルが存在する場合は、それを直接使用します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

...それ以外の場合は、次の宛先に転送しますindex.php:

RewriteRule . index.php
于 2013-03-22T13:37:19.393 に答える