2016-06-03 3 views
1

cakephp3에 처음있어 잘못되었습니다. 플러그인으로 된 zip 파일을 입력으로 받아 압축을 풀고 플러그인 폴더에 업로드하는 플러그인을 작성했습니다.cakephp3에서 새 플러그인을 업로드하고 composer.json을 업데이트하는 플러그인

문제는 플러그인 이름을 comsposer.json에 추가하고 bootstrap.php에로드해야한다는 것입니다. 그리고 플러그인을 작동 시키려면 composer dump-autoload을 실행해야한다는 추가 단계가 있습니다. 내가 수동으로 다음 단계를 수행 시도, 지금까지

Error: Create the class FileUploaderController below in file: src\Controller\FileUploaderController.php 

및 플러그인 잘 작동 : 다음 단계를 수행하지 않는 경우에, cakephp3 오류를 제공합니다. 내가 올바른 방향인지 여부를 알고 싶습니까? 그렇다면 코드를 통해 위의 단계를 수행하는 방법. bootstrap.php에서

  • 로드 플러그인
  • 실행 명령

    1. 업데이트 Composer.json 또는 composer dump-autoload에 동일한 기능을 얻을 :

      내가 코드를 통해 수행 할 작업은

    어떤 도움을 주시면 감사하겠습니다. :)

    업데이트 : 1 나는 수동 방법을 사용하는 link을 발견했습니다. 그러나 나는 코드를 통해 그것을하고 싶다.

    업데이트 2 나는 composer dump-autoload을 수행하는 방법을 찾았습니다. 다음과 같이 수행 할 수 있습니다.

    shell_exec('composer dump-autoload'); 
    

    그러나 올바른 방법인지 알고 싶습니다.

  • 답변

    0

    마지막으로, 나는 내 문제에 대한 해결책을 알아 냈습니다. 플러그인은 Bootstrap.phpautoload 매개 변수 true으로로드되어야합니다.

    composer.json을 편집하지 않으며 명령을 실행할 수 없습니다.

    난 그냥 내가이 단계를 수행하면, 내 플러그인을 통해 업로드 된 모든 플러그인이 꿈처럼 작동 bootstrap.php autoload=true

    function modifyBootstrap($plugin) 
    { 
        $bootstrap = new File(ROOT . DS . 'config' . DS . 'bootstrap.php', false); 
        $contents = $bootstrap->read(); 
        if (!preg_match("@\n\s*Plugin::[email protected]", $contents)) { 
         $autoload = "'autoload' => true, "; 
         $bootstrap->append(sprintf(
          "\nPlugin::load('%s', [%s'bootstrap' => false, 'routes' => true]);\n", 
          $plugin, 
          $autoload 
         )); 
        } 
    } 
    

    으로 업데이트 내 컨트롤러에 다음과 같은 기능을 추가했습니다.

    관련 문제