フォームからデータを取得してxmlファイルに保存するプラグインをセットアップしました。コード自体を試してみましたが、それはうまくいきましたが、onContentBeforeSaveメソッドを使ってプラグインに挿入すると、もう動作しません。 ここにプラグインのコードはありますが、私は何がうまくいかないのか分かりません!Joomla onContentBeforeSave to data to xml
defined('_JEXEC') or die();
jimport('joomla.plugin.plugin');
class plgContentsave2xml extends JPlugin
{
public function __construct($subject, $config)
{ parent::__construct($subject, $config);
}
function onContentBeforeSave($context, &$article, $isNew)
{ global $mainframe;
if(isset($_POST['create_xml']))
{
$doc = new DOMDocument('1.0');
// Formatting the file
$doc->formatOutput = true;
$doc->encoding = "Utf-8";
$field = $_POST['field'];
$field = utf8_encode($field);
$part = $doc->createElement('part');
$part = $doc->appendChild($part);
$field = $doc->createElement('field');
$field = $part->appendChild($field);
$text = $doc->createTextNode($field);
$text = $field->appendChild($text);
}
echo $doc->save('xmlf/' . 'test' . '.xml');
}
return true;
}
}
?>
ありがとうございます!私は1つのことを得ていませんでしたが、私のコードの中から何も出力しないと言ったらどういう意味ですか?プラグインがxmlファイル自体を作成すべきでないことを意味しますか?私はまた、onContentPrepareFormを使用せずにこれを行う方法があるのだろうかと疑問に思っていましたか?私の問題は、Javascriptを使用してcreateElementを使用してユーザーが作成する必要があるため、フィールドの前に指定できないことです。 – ghego1
こんにちは、私はこの呼び出しを変更する必要があることを意味します:echo $ doc-> save( 'xmlf /'。 'test'。 'xml');これは、$ doc-> save( 'xmlf /'。 'test'。 'xml'); htmlを出力する必要があるイベントがありますが、この場合は何も出力しないでください。私はそれが助けてうれしいです:)あなたが知らない "フィールド"については、あなたはフィールド名についてユーザーにコントロールを与えてはいけません、常に$ _POSTの具体的なパターンを検索するか、あなたが探しているすべてのフィールド名を持つ隠しフィールドを形成します。 – alghimo