AJAXを呼び出してJControllerを呼び出しており、既存のページ内に表示するために、一部のデータが入力された「部分」ビューを送り返したいと思います。
<view>/tmpl/
からファイルを読み込み、データをそのファイルに挿入して、結果のスニペットを保存することはできますか?
私は次のようなことをする必要があると思っています:
controller.php(アクションメソッド内)
$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'
}
[〜#〜]編集[〜#〜]
上記の正しくないコードを、動作しているように編集しました。
これは、この特定のユースケースのベストプラクティスですか?ロードされたテンプレートを返す既存のview.html.php
に新しいメソッドを単純に追加することは、不適切なフォームと見なされますか?
部分ビュー/タスクのURLは次のようにする必要があります。
_index.php?option=com_example&view=partial&format=raw
_
必要に応じて、コントローラに新しいメソッドを作成することもできます。別のビューの設定を妨げるような方法でデフォルトのdisplay()
メソッドがオーバーライドされていないことを確認してください。
次のファイルを作成します。
JROOT/components/com_example/views/partial/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/partial/tmpl/default.php
_<?php
echo 'Hello partial world!';
_