Saludos,
Llevo casi una hora peleandome con el siguiente código, en el que estoy seguro de que el "verbo" es el problema:
He usado la misma ruta para los tres verbos, he cambiado el nombre del controlador por si CodeIgniter usaba el nombre "Enforce" en alguna parte del core, he ... N, pero el resultado es siempre el mismo. GET resuelve sin problemas, pero cuando trato de usar POST o PUT CodeIgniter me devuelve todo el rato al controlador por defecto (login). Estos son los archivos:
PHP Code:
Routes.php
$routes->get('/(:uuid)/enforce/(:uuid)', 'Enforce::supplier/$1/$2');
$routes->post('/(:uuid)/enforce/(:uuid)', 'Enforce::supplier/$1/$2');
$routes->put('/(:uuid)/enforce/(:uuid)', 'Enforce::supplier/$1/$2');
PHP Code:
Enforce.php
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
/**
* Class Enforce
*
* Comentarios muy interesantes que no vienen al caso.
*/
class Enforce extends BaseController
{
/**
* Mordaz comentario descriptivo.
* @param string $bla Foo
* @param string $ble Bar
*/
public function supplier(string $bla, string $ble)
{
return $this->response->setStatusCode(200)
->setHeader('Content-Type', 'application/json')
->setBody(json_encode(['Status' => 'danger', 'Message' => implode(',', $_POST)]));
}
// - -- --- ------------------------------------------------------------
}
/* End of file Enforce.php */
/* Location ./app/Controllers/Enforce.php */
Tengo habilitado CSRF, sí, lo tengo habilitado... pero el caso es que en la petición FETCH envío el token y código csrf por lo que no debería ser el problema.
Code:
JavaScript
const Enforce = (elem, form, status) => {
const article = elem.split('-enforce-')[1]
const formData = new FormData()
formData.append('Document', String(document.querySelector('#' + article).dataset.name))
formData.append('Enforce', String(status))
formData.append('<?= csrf_token() ?>', '<?= csrf_hash() ?>')
formData.append('Upload', String(document.querySelector('#' + article).dataset.update))
fetch(form, {
method: 'PUT',
body: formData
})
.then(async recv => {
console.log(recv)
})
}
Ya estoy tirandome de los pelos... ¿alguna sugerencia?
Gracias.