2012-02-29 3 views
4

젠드 애플리케이션을 작성 중입니다.젠드 URL과 모듈 이름 대소 문자 구분

젠드 명령 줄 도구를 사용하고 있습니다. DefaultUser 모듈을 만들고 응용 프로그램 구성 파일의 기본 컨트롤러로 Default으로 표시했습니다. 나는이 두 모듈에도 각각의 Index 컨트롤러/액션을 만들었습니다.

사이트 루트를 탐색하면 모든 것이 정상입니다. 하지만 $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을 검색하면 모든 사항이 다시 정상적으로 처리됩니다. 분명히 URL은 모듈 이름을 반영하기 위해 대소 문자를 구분해야합니다. Zend Request 클래스를 다시 작성하는 것과 같은 방법으로 생각했습니다. 그러나 URL 작업에서 소문자 모듈 이름을 얻는 가장 좋은 방법은 무엇입니까?

편집 1 : 폴더 구조 :

enter image description here

+0

당신이 파일 트리를 표시 할 수 있습니다 추가해야하거나 모듈 및 컨트롤러와 설정을 생성하는 방법을 어쩌면 너무 – Vytautas

+0

물론, 질문은 편집 유용 할 것이다. – Salman

+0

모듈 디렉토리에서 폴더 이름을 '사용자'에서 '사용자'로 변경하십시오. –

답변

0

젠드 클래스 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

이 경우 응용 프로그램이 모든 시스템에서 실행되고 대소 문자를 구분하지 않는지 확인하는 앱 코드 (젠드 라이브러리 아님)에서 변경할 수 있습니까? 그게 내가 원하는거야. – Salman