El método de CakePHP 3 autoLayout(false)
de la otra respuesta todavía tendrá el sistema intentar localizar un archivo de vista/plantilla correspondiente a la acción que está llamando. Como no necesitaba ninguna salida, esto no funcionó para mí, así que también necesitaba renderizar una plantilla vacía.
Crear un archivo .ctp
en blanco para cada acción vacía que pueda necesitar no es realmente una opción, porque normalmente desearía tener uno y volver a utilizarlo. CakePHP 2 tenía una propiedad $this->viewPath
que le permitía configurar el controlador para buscar en la carpeta app/View
, pero su alternativa de CakePHP 3 sigue buscando en las carpetas correspondientes de controlador y prefijo. Existe una forma no tan obvia de obligar a CakePHP3 a buscar una plantilla en una ruta de vista raíz.
- Crear
src/Template/my_blank_view.ctp
Añadir lo siguiente a la acción del controlador:
$this->viewBuilder()->layout(false);
$this->viewBuilder()->templatePath('.'); // this
$this->viewBuilder()->template('my_blank_view');
Además, estoy usando $this->viewBuilder()->layout(false)
en lugar de autoLayout(false)
ya que este último tipo de implica que puede haber otro diseño establecido más adelante, donde el layout(false)
establece explícitamente que no se necesita diseño.
Aún intenta buscar un archivo de vista y me muestra 'Error: no se encontró la vista para ExampleController :: myAction() –