Je me réfère au code ci-dessous, présenté dans Développement d'un composant MVC - Exemple de fonction frontale:
class HelloWorldViewUpdHelloWorld extends JView
{
// Overwriting JView display method
function display($tpl = null)
{
$app = JFactory::getApplication();
$params = $app->getParams();
$dispatcher = JDispatcher::getInstance();
// Get some data from the models
$state = $this->get('State');
$item = $this->get('Item'); //WHAT IS THE PURPOSE OF THIS STATEMENT?
$this->form = $this->get('Form');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Display the view
parent::display($tpl);
}
}
Je ne comprends pas le but de cette déclaration et je remarque aussi que $item
n'apparaît pas dans le code du fichier site/views/updhelloworld/tmpl/default.php
sur cette page Web.
J'ai en fait la même question pour le view.html.php
fichier de com_users/views/registration
de Joomla 3 code (j'ai pensé qu'en comparant les deux formulaires, je pouvais répondre à ma question):
$this->data = $this->get('Data'); //WHAT IS THE PURPOSE OF THIS STATEMENT? WHAT PRECISELY KIND OF DATA iS MEANT HERE?
$this->form = $this->get('Form');
$this->state = $this->get('State');
$this->params = $this->state->get('params');
Et aussi ici $this->data
n'apparaît pas dans le fichier tmpl/default.php
(?)
Dans les classes étendues JView
ou JViewLegacy
, un appel à $this->get()
appellera une fonction dans les classes de modèle enregistrées commençant par get. Donc, appeler $this->get('Item')
appellera la méthode getItem d'un modèle.
Le $this->get('Item')
appelle la fonction getItem()
dans le modèle, puis charge les données de la base de données.
$this->get('Data')
appelle une méthode du modèle qui récupère les données du formulaire d'enregistrement et les prépare pour utilisation.
Regardez getData
dans com_users/models/registration.php