Доброго времени суток всем! Второй день долбусь над следующей проблемой - надо чтоб отредактированный в стандартном джумловском редакторе текст хранился в бд. Все работает, но какойто фильтр начисто вырезает все хтмл тэги. Если кто-нибудь знает, в чем проблема, подскажите. Код следующий: Функция сохранить в контроллере: function save() { $model = $this->getModel('vedit'); if ($model->store($post)) { $msg = JText::_( 'Information Saved!' ); } else { $msg = JText::_( 'Error Saving Information' ); } // Check the table in so it can be edited.... we are done with it anyway $link = 'index.php?option=com_hello'; $this->setRedirect($link, $msg); } Код соответствующей функции в модели: function store() { $row =& $this->getTable(); $data = JRequest::get( 'post' ); // Bind the form fields to the hello table if (!$row->bind($data)) { $this->setError($this->_db->getErrorMsg()); return false; } // Возвращает true в любом случае if (!$row->check()) { $this->setError($this->_db->getErrorMsg()); return false; } // Store the web link table to the database if (!$row->store()) { $this->setError( $row->getErrorMsg() ); return false; } return true; } Код соответствующего файла таблицы: class TableVedit extends JTable { var $id = null; var $id_num = null; var $name = null; var $valuee = null; var $description = null; function TableVedit(& $db) { parent::__construct('#___enum_value', 'id', $db); } } Код хтмл шаблона: <form action="index.php" method="post" name="adminForm" id="adminForm"> <div class="col100"> <fieldset class="adminform"> <legend><?php echo JText::_( 'Details' ); ?></legend> <table class="admintable" width="100%"> <tr> <td width="100%">Name: <input class="text_area" type="text" name="name" id="name" size="32" maxlength="250" value="<?php echo $this->vedit->name;?>" /> </td> </tr> <tr> <td>Value: <?php // parameters : areaname, content, hidden field, width, height, rows, cols editorArea( 'valuee', $this->vedit->valuee , 'valuee', '100%;', '450', '60', '20' ) ; ?> </td> </tr> </table> </fieldset> </div> <div class="clr"></div> <input type="hidden" name="option" value="com_hello" /> <input type="hidden" name="id" value="<?php echo $this->vedit->id; ?>" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="controller" value="vedit" /> </form>
omfgpanda, дело в том, что все теги бездушно вырезаются. Например я прописываю в html "<b>привет, мир</b>", в бд заносится "привет, мир". Тегов как и не было. _voland_, это тоже не прокатило - ведь не в первом поле я не использую редактор, а результат тот же. А во-вторых, com_content работает прекрасно и там все сохраняется как надо. Эээх, придется сейчас наверное этот компонент ковырять, смотреть че у меня не так как там...
Ну наконец-то... В общем я нашел решение. На случай, если кому-нибудь может это показаться полезным, надо было в контроллере добавить строчку $post['valuee'] = JRequest::getVar('valuee', '', 'post', 'string', JREQUEST_ALLOWRAW); // Без нее редактор работать не будет. а в модели дать методу store переменную $date на обработку. Теперь все работает ок, Спасибо всем за участие! ))
Привет. Всем. Это не Баг и не Фича. Это всего навсего криворукость. Я сам таким пострадал немного. Смысл ошибка в том, что когда ты принимаешь переменную ты должен указать к какому типу относится переменная. А написал я это потому как эта статья мне очень помогла в поиске моего бага. Но тут толком не было объяснено причина ошибки. Удачи всем в программинге.
artem_prozorov, А не могли бы Вы поподробнее расписать решение этой проблемы. В других цмс просто есть возможность включения и пхп и хтмл кода в страницу. Моих знаний элементарно не хватает , чтобы понять вас. Хотя если покопаться можно было бы разобраться, но боюсь на это уйдет много времени.
о в менеджере материалов есть такие настройки....поторопился с созданием темы) Сейчас посомтрю где у них фильтр храниться. здесь кстати этот мегаполезный фикс(наверное он конечно помогает, но иногда он откровенно мещшает ) http://www.whyjoomla.com/blog/further-information/74-html-filters-in-joomla-15-how-to-allow-full-embedded-html
Плагины/Редактор TinyMCE - Очистка кода при загрузке -включить , Очистка кода при сохранении - никогда.
как совсем дикий вариант можно сделать так: 1. включить использование черного списка в менеджере материалов(в принципе он по умолчанию там работает, но для пущей убедительности). 2. в файле libraries\joomla\filter\filterinput.php подредактировать массивы: tagblacklist и attrblacklist. хотя все равно как-то странно ведет себя джумла(видать она еще где-то режет тэги по регекспам каким-то). Но в этом случае можно создать допустим текстовое поле заполненное тэгами.....однако при редактировании повторном содержимое поля уже не отображается. вот такие дела
еще взял и заремил функцию clean в filterinput.php. получилось такое: function clean ($source, $type='string') { return $source; //была переменная $result...короче функция выдает на выход то, что попало на вход... это наверное может иметь неприятный исход....посмотрим, главное соблюдать чистоту кода }
все что я делал это безумие)) кому надо берите и юзайте Jumi. http://edo.webmaster.am/ru/jumi/overview
Друзья! Смотрите http://docs.joomla.org/Developers - там все описано. Правда на китайском, но есть очень полезная инфа, например описаны принципы работы джумлы, что к чему обращается и что за что отвечает, а так же есть примеры создания простого компонента и последующей его модификации. Надо сказать мне это очень помогло, может и вы что-нибудь полезное для себя найдете. А при большом желании можно всю эту инфу переведенной найти, я вроде бы где-то встречал, возможно даже в википедии, не помню точно
спасибо...свой компонент я уже один создал...работает пока а проблему я решил установкой JUMI как рукой сняло...плюс ко всему оно очень хорошо с моим компонентом сочитается