2017-02-06 9 views
-1

は、モジュール名コントローラ名アクション名コーディングを通じて私の枠組みの中でモジュールのを変更したいです。Zendフレームワークのモジュール名、コントローラ名、およびアクション名を設定しますか?同じフレームワークでコーディングしながら、私は最近、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内の同じパスへ

アプリケーションディレクトリの名前をInstituteに更新します

modules.config.php内のモジュールの配列内の名前を更新するか、modulesキーの下にある以前のバージョンのapplication.config.phpを使用している場合は更新してください。

を:私はあなたのことを考えることができるすべてのですが、以下のように基本的な考え方は次のようになり

********

******** EDITを行う必要があるだろう

新しいモジュールにコンソールを追加しますが(私は、Zend 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ファイルを再帰的に検索し、replace(本当に改善する必要があります)という文字列を適用する必要があります。同様のロジックと上記の手順を使用して、ビューとアプリケーションレベルの設定を更新することもできます。

私が書いたコードは非常に悪く、おそらく安全ではありませんが、道に沿って助けてくれるかもしれません。

+0

ありがとう、しかし、私はコーディングを通じてそれを行うタスクが割り当てられています。コーディングを通じて、あなたが私に言ったことは、何らかの方法がありますか? – Seeker

+1

ええ、道がある...私は1つ書くことを見ることができます。シェルスクリプトは大丈夫でしょうか?それとも別のものにする必要がありますか? –

+0

これはzend-frameworkアプリケーションの中でコード化する必要があります(私が尋ねるように)が、シェルを使って行う方法を教えてくれれば幸いです。 – Seeker

関連する問題