it-swarm-eu.dev

Come caricare una vista parziale in una vista normale tramite AJAX?

Sto effettuando una chiamata AJAX al mio JController e vorrei inviare una vista 'parziale' per la visualizzazione all'interno della pagina esistente, popolata con alcuni dati.

È possibile caricare un file da <view>/tmpl/, inserire i dati al suo interno e memorizzare lo snippet risultante?

Sto pensando di dover fare qualcosa del tipo:

controller.php (nel metodo di azione)

$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'
}

[~ ~ #] modifica [~ ~ #]

Ho modificato il precedente codice errato sopra in quello che sembra funzionare.

È questa la migliore pratica per questo particolare caso d'uso? Sarebbe considerato una cattiva forma aggiungere semplicemente un nuovo metodo all'esistente view.html.php che restituisce il modello caricato?

5
codinghands

L'URL per la vista/attività parziale deve essere simile al seguente:

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

È inoltre possibile creare un nuovo metodo nel controller, se necessario. Assicurarsi che il metodo predefinito display() non venga sovrascritto in modo da ostacolare l'impostazione di una vista diversa.

Ora crea i seguenti file:

JROOT/componenti/com_example/vista/parziale/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/componenti/com_example/vista/parziale/tmpl/default.php

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