it-swarm-es.tech

¿Cómo cargar una vista parcial en una vista normal a través de AJAX?

Estoy haciendo una llamada AJAX a mi JController y me gustaría enviar una vista 'parcial' para mostrar dentro de la página existente, poblada con algunos datos.

¿Es posible cargar un archivo desde <view>/tmpl/, Inyectar datos en él y almacenar el fragmento resultante?

Estoy pensando que necesito hacer algo como:

controller.php (en el método de acción)

$view = $this->getView('MyView', 'results'); // loads view.results.php
$view->assignRef('data', $response); // assign data
$storedView = $view->display(); // store the view

view.results.php

function display($tpl = null){
    return $this->loadTemplate('results'); // loads '/<view>/tmpl/default_results.php'
}

EDITAR

He editado el código incorrecto anterior a lo que parece estar funcionando.

¿Es esta la mejor práctica para este caso de uso en particular? ¿Se consideraría una mala forma simplemente agregar un nuevo método al view.html.php Existente que devuelve la plantilla cargada?

5
codinghands

Su URL para la vista/tarea parcial debe verse así:

index.php?option=com_example&view=partial&format=raw

También puede crear un nuevo método en el controlador, si es necesario. Asegúrese de que el método predeterminado display() no se anule de una manera que impida la configuración de una vista diferente.

Ahora cree los siguientes archivos:

JROOT/components/com_example/views/partial/view.raw.php

<?php
defined('_JEXEC') or die;

class ExampleViewPartial extends JViewLegacy
{
    function display($tpl = null)
    {
        // Get the data needed for the view ...

        // Call parent
        parent::display($tpl);
    }

}

JROOT/components/com_example/views/partial/tmpl/default.php

<?php
echo 'Hello partial world!';
3
Valentin Despa