モジュールのディレクトリ、特に に配置されたモジュールを変更することは、推奨される方法ではありません/vendor/
。/config/autoload/
これは、構成テンプレートを独自のディレクトリにコピーする必要がある理由でもあります。
モジュールは、使用に十分な柔軟性を持たせるために、十分な拡張ポイントを提供する必要があります。これらの可能性の中には、次のオプションがあります。
ルートを変更する
ZfcUser モジュールは、/user url の下に自身を登録します。たとえば、これを /account に変更したい場合は、これを構成に追加するだけです。
<?php
return array(
'di' => array(
'instance' => array(
'Zend\Mvc\Router\RouteStack' => array(
'parameters' => array(
'routes' => array(
'zfcuser' => array(
'options' => array(
'route' => '/account',
),
),
),
),
),
),
),
);
コントローラーを変更する
の使用に満足できずZfcUser\Controller\UserController
、このコントローラーのアクションをオーバーライドしたい場合は、カスタム コントローラーを作成できますMyUser\Controller\UserController
。を拡張してZfcUser\Controller\UserController
この構成を提供すると、準備完了です。
<?php
return array(
'di' => array(
'instance' => array(
'Zend\Mvc\Router\RouteStack' => array(
'parameters' => array(
'routes' => array(
'zfcuser' => array(
'options' => array(
'defaults' => array(
'controller' => 'MyUser\Controller\UserController'
),
),
),
),
),
),
),
),
);
zfcuser
DI エイリアスを使用して、DI 構成のエイリアスをオーバーライドすることもできます。
<?php
return array(
'di' => array(
'instance' => array(
'alias' => array(
'zfcuser' => 'MyUser\Controller\UserController'
),
),
),
);
フォーム インスタンスを変更する
たとえば、ZfcUser モジュールはいくつかのイベントをトリガーして、他のモジュールがフォーム作成プロセスにフックできるようにします。両方とも、すべてのフォーム要素を設定した後にイベントZfcUser\Form\Login
をZfcUser\Form\Register
トリガーします。init
これにより、要素を追加または削除できます。
use Zend\EventManager\StaticEventManager;
$events = StaticEventManager::getInstance();
$events->attach('ZfcUser\Form\Login', 'init', function ($e) {
$form = $e->getTarget();
$form->addElement('text', 'something-new');
});
ここで、次の 2 つの点に注意する必要があります。
- すべてのモジュールは、独自のトリガーを提供する必要があります。この ZfcUser には
init
両方の形式がありますが、これはすべてのモジュールに与えられているわけではありません。これについて調べるには、ドキュメントまたはソース コードを調べる必要があります。
- は現在、シングルトンを、ロケーターを介してインスタンス化できるインスタンス
Zend\EventManager
に置き換えるリファクタリング中です。このリファクタリングの進行状況は、このプル リクエストで確認できます。StaticEventManager
SharedEventManager
Zend\Di
ビューまたはフォームのレンダリングを変更する
この RFCに従って、Zend\Form
コンポーネントは変更される可能性があります。特にレンダリングでは、デコレーターが削除され、「ただの」通常のビュー ヘルパーが代わりにフォームをレンダリングします。これに加えて、ビューをオーバーライドする可能性があるため、いくつかのビュー スクリプトのみで別のモジュールを使用するだけで、アクションのレンダリングを非常に簡単に変更できます。
独自のモジュールを作成してこの構成を提供する場合は、テンプレート パス スタックに新しい場所を追加します。
<?php
return array(
'di' => array(
'instance' => array(
'Zend\View\Resolver\TemplatePathStack' => array(
'parameters' => array(
'paths' => array(
'myuser' => __DIR__ . '/../view',
),
),
),
),
),
);
view
これで、モジュールのディレクトリにビュー スクリプトを作成できます。「MyUser」という名前のモジュールが下に/modules/MyUser
あり、ZfcUser ( にある) からのログイン ビュー スクリプトをオーバーライドする場合は、 で/vendor/ZfcUser/view/zfcuser/login.phtml
ビュー スクリプトを作成します/modules/MyUser/view/zfcuser/login.phtml
。