zf2 zend invokables framework php module zend-framework2 override

php - invokables - zend orm



¿Cómo anular/clonar módulos, que el compositor descarga en el proveedor en zf2? (2)

¡¡¡ASI QUE!!!

zfcUser módulo zfcUser (pero también quiero hacer esto con cualquier otro módulo) a mi proyecto, basado en Zend Framework 2. *. Cómo puedo anular los controladores / vistas / configuraciones de este módulo, por lo que los cambios de ellos no se eliminarán con la actualización de las dependencias con el compositor (traté de hacer esto y no encontré los archivos son eliminados, pero ¿qué pasaría si ...? Oo )

Sé que existe la manera de hacerlo, pero no lo sé. Ver ayuda? ¿O que?

¡Ayudame por favor! Gracias.

INFORMACIÓN ADICIONAL

Carpetas actuales y archivos de ZfcUserOverride:


respondamos todas sus preguntas una a una.

Pero antes, tengamos en cuenta que ModuleManager está creando la "Configuración de la aplicación" fusionando todas las configuraciones del servicio de los módulos (el nombre de archivo predeterminado es config / module.config.php dentro de cada módulo) de todos los módulos registrados (clave ''modules'' en su aplicación. config.php) comenzando desde el primero hasta el último: esto significa que el último "gana".

Para dar un ejemplo práctico, si tiene una clave de configuración llamada "XYZ" en el módulo "A" para anular sus valores en el módulo "B", el módulo "B" debe registrarse después de "A".

Suponiendo que desea anular las configuraciones de ZfcUser en su módulo de Aplicación, esta última debe registrarse después de la anterior.

''modules'' => array( ''ZfcUser'', ''Application'', ),

1) ¿Cómo sobrescribir solo ver guiones?

Como ya se mencionó, debe crear un módulo personalizado (le sugiero que use zftool para crear un nuevo proyecto y andamiaje de módulo) que contenga su reemplazo de scripts de vista personalizados dentro de la carpeta views / {module name} (views / zfc-user for ZfcUser module ) Intente de forma simple creando el módulo / {module-name} /view/zfc-user/user/login.phtml con cualquier elemento que contenga, visite la url / usuario / inicio de sesión: debería ver su script de vista reemplazado.

2) ¿Cómo puedo anular un controlador?

Los controladores están registrados como servicios, si ves la configuración del módulo ZfcUser puedes encontrar

''controllers'' => array( ''invokables'' => array( ''zfcuser'' => ''ZfcUser/Controller/UserController'', ), ),

La tecla ''zfcuser'' se puede usar en la configuración de ruta

''defaults'' => array( ''controller'' => ''zfcuser'', // this refers to the controller service ''action'' => ''index'', ),

En el módulo ZfcUser, el controlador del usuario, las reglas de enrutamiento y template_path_stack tienen el mismo nombre, ''zfcuser'' y a primera vista puede ser confuso, solo tenga en cuenta que se refieren a diferentes servicios (vista, controlador y configuración de ruta).

Para forzar a la aplicación a usar su controlador personalizado en lugar del UserController de ZfcUser, solo necesita anular el servicio de controladores en su módulo personalizado como sigue (para este ejemplo usé el módulo de Aplicación)

''controllers'' => array( ''invokables'' => array( ''zfcuser'' => ''Application/Controller/UserController'', ), ),

Su ''Aplicación / Controlador / UserController'' puede extender el controlador original para mantener la funcionalidad original (quizás necesite editar solo un par de métodos).

3) ¿Cómo puedo anular una configuración?

Si para ''config'' te refieres a una configuración de servicio simplemente haz el mismo trabajo que el punto 2: toma la clave de configuración y cambia su valor.

ZfcUser es un módulo configurable, esto significa que hay valores, cualquier tipo de valores, no necesariamente servicios, que se pueden configurar. Eche un vistazo a config / zfcuser.global.php.dist: este archivo, renombrado sin el sufijo .dist, puede incluirse en su directorio {Application} / config / autoload y el marco cargará automáticamente su contenido (que configurará el módulo). Por ejemplo, puede configurar cuáles son los campos de identidad, si usar o no captcha, ruta después del inicio de sesión y así sucesivamente ...

No explicaré aquí cómo hacer un módulo configurable, hay muchos tutoriales sobre cómo hacerlo.

Espero no haber confundido nada y que he respondido de manera exhaustiva a sus preguntas, si tiene algún problema solo responda :)

Aclamaciones


La mejor manera de hacerlo sería crear su propio módulo para anular todo lo que desea anular. Las vistas son fáciles, simplemente agregue una subcarpeta llamada zfc-user en la carpeta de visualización de su módulo con un usuario de subcarpeta, de modo que obtenga YourModule / view / zfc-user / user. En esta carpeta de vistas personalizada, puede simplemente agregar sus propias versiones de ZfcUser. plantillas: login.phtml, register.phtml etc.

Para que esto funcione, asegúrese de que su módulo esté cargado después de ZfcUser. Por lo tanto, en su config / application.config.php asegúrese de que YourModule viene después de ZfcUser en la matriz ''modules''.

Para anular los controladores simplemente defina su propio UserController en su propio módulo, ya sea extendiendo el UserController de ZfcUsers o definiendo el suyo propio. Luego haz que la ruta se encargue del resto. Entonces, en el módulo module.config.php de YourModule crea rutas que apuntan a tu propio UserController.

Editar Agregue su UserController personalizado a su módulo ZfcUserOverride. A continuación, agréguelo al module.config.php de este mismo módulo a la configuración del administrador de servicios y alíelo con zfcuser, que es el nombre que utiliza ZfcUser.

''controllers'' => array( ''invokables'' => array( ''zfcuser'' => ''ZfcUserOverride/Controller/UserController'', ), ),

Edición 2: No olvide agregar esto a su module.config.php:

''view_manager'' => array( ''template_path_stack'' => array( ''zfcuser'' => __DIR__ . ''/../view'', ), ),

Esto es obligatorio si está anulando las secuencias de comandos de vista de ZfcUser.