Son varias las novedades y cambios que se vinieron en los cambios del Framework de PHP CodeIgniter 4 en su versión 4.5.1.
Las novedades ya lo pueden ver directamente en su web https://codeigniter4.github.io/userguide/installation/upgrade_450.html
Entre los cambios mas básicos que se tienen que hacer es copiar el archivo spark e index.php desde la carpeta de vendor al proyecto principal mas o menos asi
cp vendor/codeigniter4/framework/public/index.php public/index.php
cp vendor/codeigniter4/framework/spark spark
Esa parte es la mas básica pero en nuestro caso vimos que fallo en una biblioteca de manejo de usuarios Myth/Auth el cual no guardaba usuarios y nos arrojaba el siguiente error:
Could not check compatibility between Myth\Auth\Authentication\Passwords\CompositionValidator::check(string $password, ?CodeIgniter\Entity\Entity $user = null): bool and Myth\Auth\Authentication\Passwords\ValidatorInterface::check(string $password, ?CodeIgniter\Entity $user = null): bool, because class CodeIgniter\Entity is not available in D:\proyectoCodeIgniter\vendor\julio101290\auth\src\Authentication\Passwords\CompositionValidator.php
Error que se corrige solo con cambiar la linea de use CodeIgniter\Entity; a use CodeIgniter\Entity\Entity; en el archivo proyectoCodeIgniter\vendor\julio101290\auth\src\Authentication\Passwords\ValidatorInterface.php
Igual ya se actualizo el repositorio https://github.com/julio101290/myth-auth/releases/tag/v1.2.8
Si utilizan este fork de la librería solo hagan un composer update
Otro detalle al parecer la ruta el resources ya no tomo en automático el update, o quizás se definieron por seguridad otro tipo de reglas por lo cual se corrigió la biblioteca de boilerplate
En el archivo de vendor\julio101290\boilerplate\src\Config\Routes.php se agregaron el siguiente código para que pueda actualizar, igual si existe otra manejara dejarlo en la caja de comentarios
/**
* Users Update
*/
$routes->post('user/manage/(:any)/update', 'UserController::update/$1', [
'filter' => 'permission:back-office',
'namespace' => 'julio101290\boilerplate\Controllers\Users',
'except' => 'show',
'as' => 'update',
]);
$routes->post('role/(:any)/update', 'RoleController::update/$1', [
'filter' => 'permission:role-permission',
'namespace' => 'julio101290\boilerplate\Controllers\Users',
'except' => 'show',
'as' => 'updateRole',
]);
De igual manera se actualizo la biblioteca en https://github.com/julio101290/boilerplate/releases/tag/v1.3.8
Otro de las correcciones que se tienen que hacer es que si se hacen peticiones Ajax el método tiene que ir en minúscula por ejemplo:
Así estaba uno antes
ajax: {
url: '<?= base_url('admin/sells') ?>',
method: 'GET',
dataType: "json"
},..........................
Ahora tendría que quedar así, muy simple, entenderle a primera no fue fácil
ajax: {
url: '<?= base_url('admin/sells') ?>',
method: 'get',
dataType: "json"
},
Otros de los errores fue en el nivel de modelo, nos arrojo el siguiente error
CodeIgniter\\Database\\BaseBuilder::getOperatorFromWhereKey(): Argument #1 ($whereKey) must be of type string, int given
El detalle era en el where que antes funcionaba de la siguiente manera
->where('\'0\'', $empresa,true)
Ahora funciona de la siguiente manera
->where('\'0\'', $empresa,true)