Me refiero al siguiente código, presentado en Desarrollo de un componente MVC - Ejemplo de función de front-end :
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);
}
}
No entiendo el propósito de esta declaración y también noto que $item
no aparece en el código del archivo site/views/updhelloworld/tmpl/default.php
en esa página web.
De hecho, tengo la misma pregunta para view.html.php
archivo de com_users/views/registration
del código Joomla 3 (pensé que al comparar los dos ejemplos de envío de formularios podría responder mi pregunta):
$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');
Y también aquí $this->data
no aparece en el relacionado tmpl/default.php
archivo (?)
En las clases que extienden JView
o JViewLegacy
, una llamada a $this->get()
llamará a una función en clases de modelo registradas que comienzan con get. Entonces llamar a $this->get('Item')
llamará al método getItem de un modelo.
$this->get('Item')
llama a la función getItem()
en el modelo, y posteriormente carga los datos de la base de datos.
$this->get('Data')
llama a un método en el modelo que obtiene los datos del formulario de registro y los prepara para su uso.
Echa un vistazo a getData
en com_users/models/registration.php