2017-02-06 1 views
-1

모듈 이름, 컨트롤러 이름액션 이름 코딩을 통해 내 프레임 워크 모듈의을 변경하고 싶습니다.Zend 프레임 워크에서 모듈 이름, 컨트롤러 이름 및 작업 이름을 설정 하시겠습니까? 같은 프레임 워크에 코딩하는 동안 나는 최근 젠드 Framework.I로 프로그래밍을 시작

그 이름은 응용 프로그램 (모듈 & 컨트롤러) 내가 연구소로 변경하고 싶습니다. 코딩을 통해 가능합니까?

Google을 통해 도움을 요청했지만 도움을받을 수 없거나 제대로 이해하지 못했습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

달성하려는 목표는 무엇입니까?Application이라는 모듈이 있고 Institute로 이름을 바꾸시겠습니까? –

+0

예 @PurpleHexagon. 나쁜 질문 때문에 질문을 할 수 없기 때문에이 게시물이나 다른 게시물을 편집 해 주시면 감사하겠습니다. – Seeker

답변

1

이건 정말 이름 변경 일의 단지 경우입니다 :

업데이트 모든 컨트롤러의 이름 Module.php

업데이트를 포함하여 모듈의 모든 클래스에있는 연구소 응용 프로그램에서 네임 스페이스와이 항목의 in config/module.config.php

보기 디렉토리에 view/application/index 등의 이름이 있으면/institute/index를보고 항목을 업데이트했는지 확인하십시오. module.config.php에서 동일한 경로로

연구소

업데이트는 모듈 키 아래에서 이전 버전의 application.config.php을 사용하는 modules.config.php 또는 경우 모듈의 배열의 이름에 응용 프로그램 디렉토리의

업데이트 이름입니다. 다음과 같이 내가 생각할 수있는 모든 그래서 기본적인 아이디어는 것

******** 편집

********해야 할 것입니다

:

새 모듈에 콘솔을 추가 (내가 젠드 MVC 콘솔을 사용했지만 MVC 콘솔이되지 않습니다 당신은 아마 https://github.com/zfcampus/zf-console를 사용한다)

module.config.php

<?php 
namespace Rename; 

use Zend\ServiceManager\Factory\InvokableFactory; 

return [ 
    'console' => array(
     'router' => array(
      'routes' => array(
       'rename-module' => array(
        'options' => array(
         'route' => 'module rename <moduleNameOld> <moduleNameNew>', 
         'defaults' => array(
          'controller' => Controller\IndexController::class, 
          'action'  => 'rename' 
         ) 
        ) 
      ) 
     ) 
    ) 
), 
    'controllers' => [ 
     'factories' => [ 
      Controller\IndexController::class => InvokableFactory::class, 
     ], 
    ], 
]; 

는 IndexController.php는

<?php 
namespace Rename\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 
use Zend\Console\Request as ConsoleRequest; 
use Zend\Mvc\Console\Controller\AbstractConsoleController; 

class IndexController extends AbstractConsoleController 
{ 
    public function renameAction() 
    { 
     $request = $this->getRequest(); 

     // Make sure that we are running in a console and the user has not tricked our 
     // application into running this action from a public web server. 
     if (!$request instanceof ConsoleRequest) { 
      throw new \RuntimeException('You can only use this action from a console!'); 
     } 

     $moduleNameOld = $request->getParam('moduleNameOld'); 
     $moduleNameNew = $request->getParam('moduleNameNew'); 

     $module = file_get_contents(getcwd() . "/module/$moduleNameOld/src/Module.php", 'r+'); 
     $updatedModule = str_replace($moduleNameOld, $moduleNameNew, $module); 
     file_put_contents(getcwd() . "/module/$moduleNameOld/src/Module.php", $updatedModule); 

     rename("module/$moduleNameOld", "module/$moduleNameNew"); 
    } 
} 

이 난 단지 여기에 모듈의 이름을 변경하고 완료합니다 Module.php

을 네임 스페이스의 이름을 변경 한 적이

php public/index.php module rename Application Institute 

처럼 실행할 수 있습니다 이 작업을 수행하면 Application 디렉토리의 모든 .php 파일을 재귀 적으로 찾고 대체 문자열 (실제로는 개선되어야 함)을 적용하는 루프를 반복해야합니다. 그런 다음 비슷한 논리로 위의 단계를 사용하여보기 및 응용 프로그램 수준 구성을 업데이트 할 수 있습니다.

작성한 코드는 꽤 나쁘고 안전하지 않지만 길을 따라 도울 수 있습니다.

+0

고마워,하지만 코딩 작업을 할 작업이 할당되었습니다. 코딩 할 때 할 수있는 방법이 있습니까? – Seeker

+1

예, 방법이있을 것입니다 ... 나는 글을 쓰는 것을 볼 수 있습니다. 쉘 스크립트는 괜찮을까요? 아니면 뭔가 다른 것이 필요합니까? –

+0

젠드 프레임 워크 응용 프로그램 (내가 묻는대로) 안에 코딩해야하지만 쉘을 사용하여 수행하는 방법을 보여줄 수 있다면 고마워 할 것입니다. – Seeker

관련 문제