解決しました!!!
モジュールの URL に別の名前を使用しようとすると、Yii は頭がおかしくなるようです。$defaultController と $defaultAction と、他に 10 個ほど渡そうとしました。私のモジュール「ezpaypal」に設定された Yii のマッピングをオーバーライドする方法がわからないので、その URL を「billing」に変更できますが、それでも「/modules/ezpaypal」を指します。
まず、Gii でモジュールを作成します。私は私の名前を「ezpaypal」と名付けました。ブーム、すべてが生成されます。
モジュール名を config.php に追加します。
'modules'=>array(
'ezpaypal'
),
問題は、URL に「ezpaypal」を見たくないということです。変更可能にしたいので、「/billing」または「/checkout」にすることができます..そのため、モジュールの名前を「ezpaypal」のままにする必要があります。私はルールを試してみましたが、たくさんの問題に遭遇しました。
Yii が「ezpaypal」のルート エイリアスを作成したようです。それは私のロード済みモジュールだからです。実際、通常どおり使用すれば問題なく動作します。使用するコントローラーをすべて知っています。
urlManager ルールを使用して "billing" を "ezpaypal" にマップし、URL の名前を変更すると、Yii はどのデフォルト コントローラを使用すればよいかわかりません。また、/controller/view/3 を実行することを認識していない /controller/3 のように、実行するデフォルトのアクションも認識していません。Yii は脳死状態になりました。
より良い解決策は、Yii がこれを処理するための「隠された」またはあまり知られていない方法を持っている場合でしょうか? Yii フレームワークのどこで構成を解析してモジュールをロードするのかわかりません。おそらく、長いURLマネージャーのルールなしでこれを修正する関数または設定する変数を見つけることができます. urlmanager に何も追加しなくても、「ezpaypal」のモジュール URL ルールを適切に処理します...
ただし、簡単な修正方法は、考えられるすべての組み合わせを処理するように URL マネージャー ルールを作成することです。たぶん、誰かがこれをより少ない行にクリーンアップできますか?
'rules'=>array(
// EZPayPal Friendly URL Support - DO NOT TOUCH!
'<module:(billing)>'=>'ezpaypal',
'<module:(billing)>/index'=>'ezpaypal/default/index',
'<module:(billing)>/<controller:\w+>'=>'ezpaypal/<controller>',
'<module:(billing)>/<controller:\w+>/<id:\d+>'=>'ezpaypal/<controller>/view',
'<module:(billing)>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'ezpaypal/<controller>/<action>',
'<module:(billing)>/<controller:\w+>/<action:\w+>'=>'ezpaypal/<controller>/<action>',
),
作品:)
モジュールに別の URL パスを使用して同じことを行っている人がいる場合は、"billing" を URL で使用する名前に変更し、"ezpaypal" をモジュールのディレクトリの実際の名前に変更してください。
PS:上記のルールは簡略化できますか? 私はわかりません。これは完璧な組み合わせのようです。1つ削除すると、そのルートが壊れます。また、urlmanager なしでこれをオーバーライドできるように、さらに簡単な方法を探しています。