質問:データベース テーブル (#__mytable) の値を、Joomla 3.0 プラットフォーム内の XML ファイルからレンダリングされたフォーム テキスト フィールド (motitle
および)に挿入するにはどうすればよいですか?modescription
-
私はこの「簡単な」Joomla を解決するために何日も試みてきました! ベースの文書化されていないチャレンジ。MVC の開発に関する Joomla! のガイドに従い、古いドキュメントのほとんどを読み、com_content
コンポーネントを分解しましたが、フィールドにデータを入力する方法がまだわかりません。
で遊んでい$this->form->bind($this->item);
ます。
以下に、使用している構造を示すためにコードの一部を含めました。途中で見つけた問題を遠慮なく指摘してください。
モデル\フォーム\item.xml
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="groupOPTIONS">
<fieldset name="Options">
<field
type="text"
name="motitle"
id="motitle"
label="Title"
description="MY TEXT FIELD DESCRIPTION"
maxLength="255" />
<field
type="textarea"
name="modescription"
id="modescription"
label="Description"
description="MY TEXT FIELD DESCRIPTION"
rows="15"
cols="5"
maxLength="255" />
</fieldset>
</fields>
</form>
モデル\item.php
jimport('joomla.application.component.modelitem');
class MagicObjectsModelItem extends JModelForm {
public function getForm($data = array(), $loadData = true) {
// Get the form 'items'
$form = $this->loadForm('com_magicobjects.item', 'item',
array('control' => 'jform', 'load_data' => $loadData));
if (empty($form)) {
return false;
}
return $form;
}
protected function loadFormData() {
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_magicobjects.item.edit.data', array());
if (empty($data)) {
$data = $this->getDBItem(1);
}
return $data;
}
public function getDBItem($pk) {
//Obtain JDatabase static connection
$oDb = JFactory::getDbo();
$oQuery = $oDb->getQuery(true);
$sValueToMatch = $pk;
$oQuery
->select(array('mid', 'name', 'keyword', 'description'))
->from('#__mytable')
->where('mid = "' . $sValueToMatch . '"')
->order('mid ASC');
$oDb->setQuery($oQuery);
return $oDb->loadObjectList();
}
ビュー\アイテム\view.html.php
jimport('joomla.application.component.view');
function display($tpl = null) {
// Initialise variables.
$this->form = $this->get('Form');
$this->item = $this->get('Item');
//Display the view
parent::display($tpl);
}
Views\item\tmpl\default.php
foreach ($this->form->getFieldset('Options') as $field) {
echo $field->label;
echo $field->input;
}
item で print_r() を実行すると、データがあることがわかりますが、表示されているフィールドにデータを挿入する必要があります。