2012-02-29 21 views
4

私はZendアプリケーションを作成しています。Zend URLとモジュール名大文字と小文字の区別

私はzendコマンドラインツールを使用しています。私はDefaultUserの2つのモジュールを作成し、アプリケーション設定ファイルのデフォルトコントローラとしてDefaultとマークしました。これらの2つのモジュールに対しても、それぞれのインデックスコントローラ/アクションを作成しました。

サイトルートを参照すると、すべて問題ありません。しかし、私が$site_root$/userを参照すると、インデックスコントローラのものを取得する代わりに、エラーが発生します。

Notice: Undefined index: user in E:\xampp\php\PEAR\Zend\Controller\Dispatcher\Standard.php on line 384 

Message: Invalid controller specified (index) 
Stack trace: 

#0 E:\xampp\php\PEAR\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#1 E:\xampp\php\PEAR\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch() 
#2 E:\xampp\php\PEAR\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() 
#3 E:\xampp\htdocs\$project$\public\index.php(26): Zend_Application->run() 
#4 {main} 

Request Parameters: 

array (
    'module' => 'user', 
    'controller' => 'index', 
    'action' => 'index', 
) 

ただし、私が$site_root$/Userを閲覧すると、すべてが再びOKです。明らかに、URLはモジュール名を反映するために大文字小文字を区別する必要があります。私はZend Requestクラスを書き直すようなやり方を考えています。しかし、URLの作業で小文字のモジュール名を取得するベストプラクティスは何ですか?

編集1:フォルダ構造:

enter image description here

+0

を追加する必要がありますが、ファイルツリーを表示するか、どのようにモジュールとコントローラを作成し、設定は多分あまりにも – Vytautas

+0

確かに有用であろうことができ、質問を編集。 – Salman

+0

modulesディレクトリのフォルダ名を 'User'から 'user'に変更してください。 –

答えて

0

ZendクラスZend_Controller_Request_AbstractをファイルZend \ Controller \ Request \ Abstract.phpにチェックしてください。あなたはZFのアプリで複数のモジュールを持っている場合は、ucfirst()

public function getModuleName() 
{ 
    if (null === $this->_module) { 
     $this->_module = $this->getParam($this->getModuleKey()); 
    } 

    return ucfirst($this->_module); 
} 
2

多分問題は、デフォルトのモジュール"Default"ない"default"を設定することですか? また、フォルダ名は小文字にする必要がありますが、コマンドラインを使用したことがないので間違っています。 すべてのモジュールフォルダの名前を小文字に変更します。

1

OSやサーバーによっては、場合によっては必要な場合があります。

たとえば、WindowsとLinuxのパス。 Linuxのディスクパスでは大文字と小文字が区別され、Apaheパス構造のようなサーバーはディスクパスに基づいています。ディスクからの基本的なI/O操作に関わる操作はすべて、「ファイル」名に厳密にする必要があります。

また、URLの場合、これはサーバーの実装やおそらくプラグインによって異なります。たとえば、Apache Httpでは通常は大文字と小文字が区別されますが、mod_spelling(http://httpd.apache.org/docs/2.2/mod/mod_speling.html)を使用して、大文字小文字のようにURLに正しいスペルを付けることができます。

ファイル/クラス/メソッド/ ...の名前を厳密にすることは、常に良い習慣です。また、あなたのコードや構造をより効率的にするためにパターン(独自か否か)を適用することをお勧めします。

+0

この場合、アプリケーションがどのシステムでも動作し、大文字と小文字の区別に問題がないことを確認するアプリケーションコード(Zendライブラリではありません)に変更できますか?それは本当に私が探しているものです。 – Salman