MVCコンポーネントの開発-フロントエンド関数の例: に示されている以下のコードを参照します。
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);
}
}
このステートメントの目的が理解できず、また$item
がファイルのコードに表示されないsite/views/updhelloworld/tmpl/default.php
がそのWebページにある。
view.html.php
のcom_users/views/registration
のJoomlaコードについて同じ質問があります(比較して考えました2つのフォームは私の質問に答えることができる例を提出します):
$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');
そしてここにも$this->data
関連するtmpl/default.php
ファイルに表示されません(?)
JView
またはJViewLegacy
を拡張するクラスでは、$this->get()
を呼び出すと、getで始まる登録済みモデルクラスの関数が呼び出されます。したがって、$this->get('Item')
を呼び出すと、モデルのgetItemメソッドが呼び出されます。
$this->get('Item')
は、モデル内の関数getItem()
を呼び出し、その後、ロードしますデータベースからのデータ。
$this->get('Data')
は、登録フォームデータを取得して使用できるように準備するモデルのメソッドを呼び出します。
com_users/models/registration.php
のgetData
を見てください