Joomla 2.5 でカスタム コンポーネントを作成しようとしていますが、エディター フィールドからすべての html タグ (リンク、改行、p タグ) を取り除くのを止めるのに苦労しています。フォーム フィールドは次のとおりです。
<field
name="post"
type="editor"
label="COM_HELLO_WORLD_EDITOR_LABEL"
description="COM_HELLO_WORLD_EDITOR_DESC"
class="inputbox"
filter="JComponentHelper::filterText"
required="true"
default=""
/>
明らかに、SO と Joomla の両方のフォーラムに、これに関する多くの投稿があります。しかし、彼らは一般的に2つの明確なテーマを持っているようです.
- Tiny MCE の設定。デフォルトのエディターを「なし」(つまり、テキスト領域のみ) に設定した後にチェックしたところ、タグはすべて削除されたままです
- Joomla テキスト フィルターの設定。スーパーユーザーが「フィルタリングなし」に設定されたグローバル管理者としてログインしています
このためのモデルの保存機能を次のようにオーバーライドしています。
function store()
{
$row =& $this->getTable();
$input = new JInput();
$data = $input->getArray($_POST);
//Sets Users id as current logged in user if not set
if(!$data['jform']['post_user']) {
$data['jform']['post_user']=JFactory::getUser()->id;
}
// Bind the form fields to the post table
if (!$row->bind($data['jform'])) {
$this->setError($this->_db->getErrorMsg());
return false;
}
// Make sure the hello is valid
if (!$row->check()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
// Store the hello table to the database
if (!$row->store()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
return true;
}
私の直感は、JInput が HTML タグを削除することに関係しているということです。しかし、保存ファイルに余分な行を追加して$data['jform']['post']=$input->getHTML('post');
も何も起こりませんでした。だから、ここからどこへ行けばいいのか本当にわかりません。何か案は?
アップデート
問題をすばやく明確にするために-コンポーネントの各タグを手動で設定するのではなく、「グローバル構成」の下にあるプリセットのJoomla「テキストフィルター」設定を使用したい!
更新 2
エディター フォーム フィールドに filter="raw" を追加しました。<p>
変数をダンプすると、html タグが表示されるようになりました$_POST['jform']['post'], null, 'HTML')
。ただし、単純な JInput Filter 関数のみを適用すると、Joomla Config 値を適用することは言うまでもなく、null になります。
$input = new JInput();
$data = $input->getArray($_POST);
$data['jform']['post']=$input->get($_POST['jform']['post'], null, 'HTML');
ここの文は「HTML - フィルタのホワイト リストまたはブラック リストの対象となる、HTML エンティティとタグをそのまま含む文字列を返します」です。Global Config Text フィルター設定を参照して JInput HTML フィルターを記述しますか? ただ確認するため?