Como utilizar modelos y controladores en español en CakePHP 3
|CakePHP es un framework de desarrollo para aplicaciones php muy completo, estaba acostumbrado a la versión 2.x pero ahora ya con la versión 3.0 han habido muchos cambios drásticos, que siento que es casi aprenderlo de cero.
CakePHP tiene una gran comunidad internacional, pero como todo software o framework de este calibre su idioma principal de desarrollo es en inglés, así que en cuanto a tablas, modelo y controlares se predomina que debemos nombrarlos en ese idioma, pero hay un pequeño "truco", que no se si llamerle así, nos permite poder nombrar nuestras tablas, modelos y controladores en castellano o español según prefieran decirle.
Vamos a editar el siguiente archivo: /config/bootstrap.php, al final de ese archivo pegamos esto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Inflector::rules('singular', [ '/(.*)res$/i' => '\1r', '/(.*)nes$/i' => '\1n', '/(.*)des$/i' => '\1d', '/(.*)ses$/i' => '\1s', '/(.*)les$/i' => '\1l' ]); Inflector::rules('plural', [ '/(.*)r$/i' => '\1res', '/(.*)n$/i' => '\1nes', '/(.*)d$/i' => '\1des', '/(.*)s$/i' => '\1ses', '/(.*)l$/i' => '\1les' ]); |
En la primera regla singular establecemos que los nombres terminados en "res, nes, des, ses y les" se conviertan a sigular "r, n, d, s, l"; en la regla plural básicamente establemos lo mismo pero al sentido inverso.
Antes de estas reglas el modelo "roles" nos lo hubiera presentaría como "role", lo cual no es correcto. Después de aplicar las reglas "roles" ya se presentaría como "rol".
Espero que les sea de ayuda, para mi lo es mucho =D
Está muy bueno, pero funciona para todo?, lo has probado! Por ejemplo en que versiones de cake lo has usado, para las relaciones entre modelos es validad, me refiero a laa claves foráneas. Gracias de antemano.
Si lo tengo probado, he desarrollado toda una aplicación en Cakephp 3.0.7 utilizando modelos en español con este código; y anteriormente desarrolle 2 aplicaciones con cakephp 2.4 pero que este código no es compatible con esa versión, hay que hacerle unos cambios aunque es similar.
Solo te puedo decir que este código lo he probado en cakephp 3.0.7 y sí sirve para las relaciones entre todos los modelos, y con lo de las llaves foráneas pues eso depende de como le hayas llamado realmente.
Te dejo un código de ejemplo de las relaciones que usé en mi proyecto por si te saca de la duda también. Saludos
Hug0, MUY BUENO!!!…
La verdad que necesitaba hacer un sitio con rutas en español y me vino de 10, confirmo que en CakePHP 3.3.2 anda un lujo, sin problemas, es más, hasta mezcle tablas en ingles con tablas en español y funcionan sin drama alguno la relación.
Muchas gracias Hugo!
Saludos Fernando!! Gracias por el aporte de informarnos que también funciona en esa versión. Yo de momento me he quedado en la 3.0.7 porque simplemente me ha funcionado muy bien.
Salludos.
Inflector::rules(‘singular’, array( ‘rules’ => array( ‘/(.*)res$/i’ => ‘\1r’,
‘/(.*)nes$/i’ => ‘\1n’,
‘/(.*)des$/i’ => ‘\1d’,
‘/(.*)ses$/i’ => ‘\1s’,
‘/(.*)les$/i’ => ‘\1l’,
‘/(.*)os$/i’ => ‘\1o’,
‘/(.*)es$/i’ => ‘\1e’
‘irregular’ => array(),
‘uninflected’ => array()
)
);
Inflector::rules(‘plural’, array( ‘rules’ => array( ‘/(.*)r$/i’ => ‘\1res’, // error => errores
‘/(.*)n$/i’ => ‘\1nes’, // camion => camiones
‘/(.*)d$/i’ => ‘\1des’, // ciudad => ciudades
‘/(.*)s$/i’ => ‘\1ses’, // pais => paises
‘/(.*)l$/i’ => ‘\1les’, // local => locales
‘/(.*)o$/i’ => ‘\1os’, // carro => carros
‘/(.*)e$/i’ => ‘\1es’, // carne => carnes
‘irregular’ => array(),
‘uninflected’ => array()
)
);