Zend Framework 2を初めて使用します。プロジェクトを開始し、そのセキュリティをZfcAdmin、ZfcUser、ZfcUserAdmin、およびBjyAuthorizeで管理したいと考えています。私が最初にやろうとしているのは、作成ユーザーのプロセスを変更することです。新しいユーザーを作成した直後に、そのユーザーに役割を割り当てられるようにしたいと考えています。
私が直面している最初の問題は、ユーザーが作成されたときに、コントローラーがユーザーのリストページにリダイレクトすることです。この動作を変更する必要があります。編集ページにリダイレクトされます。ここで、最近作成されたユーザーに対してN個のロールを選択できます(エンティティとの別の戦争になります...)。UserAdminController(ZfcUserAdmin)をオーバーライドすることを選択しました。それは私がそれを達成するためにしたことです:
1.他のモジュールのプロパティをオーバーライドできるようにするために、 application.config.phpの最後の場所に管理モジュール(MyAdministration)をロードします。
2. MyAdministration / config / module.config.phpのZfcUserAdminコントローラーをオーバーライドして、次のものを使用します。
(...)
'controllers' => array(
'invokables' => array(
'zfcuseradmin' => 'MyAdministration\Controller\MyAdministrationController',
),
),
(...)
3.クラス MyAdministration/src / MyAdministration / Controller/MyAdministrationController.phpを作成しました
4.ZfcUserAdminを拡張することを宣言しました
namespace Administracion\Controller;
(...)
use ZfcUserAdmin\Controller\UserAdminController;
class AdministracionController extends UserAdminController {
(...)
5. createAction関数をオーバーライドして、編集ページにリダイレクトしました
(...)
public function createAction() {
(...)
return $this->redirect()->toRoute('zfcadmin/zfcuseradmin/edit/:userId',
array('userId' => $user->getId()));
}
(...)
それは私がそれを正しくしたかどうかわからないところです。ネットを検索してデバッグすることで、コントローラーの名前空間を目的のテンプレートへのパスに変換するInjectTemplateListenerというクラスがあることがわかりました。私のコントローラーは' my-administration/ my-administration / editに変換されますが、これはどこにもつながりません。テンプレートはZfcUserAdminモジュールに属しています。正しいパスは、そのコントローラー(ZfcUserAdmin \ Controller \ UserAdminController)によって取得されたパスです 。zfc-user-admin/ user-admin / edit
また、テンプレートパスは手動で記述できることも学びました。これらのパスは、InjectTemplateListenerによって無視されます。それが私が使ったアプローチです。MyAdministration / config / module.config.phpに、私は次のように書いています。
(...)
'view_manager' => array(
'template_map' => array(
'my-administration/my-administration/list' => __DIR__ . '/../../../vendor/ZfcUserAdmin/view/zfc-user-admin/user-admin/list.phtml',
'my-administration/my-administration/create' => __DIR__ . '/../../../vendor/ZfcUserAdmin/view/zfc-user-admin/user-admin/create.phtml',
'my-administration/my-administration/edit' => __DIR__ . '/../../../vendor/ZfcUserAdmin/view/zfc-user-admin/user-admin/edit.phtml',
'my-administration/my-administration/pagination_userlist' => __DIR__ . '/../../../vendor/ZfcUserAdmin/view/zfc-user-admin/user-admin/pagination_userlist.phtml',
),
(...)
),
それがそれを達成するための最良の方法であるかどうかはわかりません。テンプレートパスを手動で作成するのではなく、それを行うためのより良い方法があるはずだと思います。コントローラのオーバーライドについていくつかのことを見つけましたが、例はありません...これで大丈夫ですか?誰かがオーバーライドを行うためのより良いアプローチを持っていますか?
ありがとう!