ti-enxame.com

Como carregar uma exibição parcial em uma exibição normal via AJAX?

Estou fazendo uma chamada AJAX para meu JController) e gostaria de enviar de volta uma exibição 'parcial' para exibição na página existente, preenchida com alguns dados.

É possível carregar um arquivo de <view>/tmpl/, injete dados nele e armazene o snippet resultante?

Estou pensando que preciso fazer algo como:

controller.php (no método de ação)

$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

Editei o código incorreto anterior acima para o que parece estar funcionando.

Esta é uma prática recomendada para este caso de uso específico? Seria uma má forma simplesmente adicionar um novo método ao existente view.html.php que retorna o modelo carregado?

5
codinghands

Seu URL para a exibição/tarefa parcial precisa ter a seguinte aparência:

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

Você também pode criar um novo método no controlador, se necessário. Verifique se o método padrão display() não é substituído de maneira a dificultar a configuração de uma exibição diferente.

Agora crie os seguintes arquivos:

JROOT/components/com_example/views/parcial/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/parcial/tmpl/default.php

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