Я пытаюсь создать текстовый фильтр в моем Magento сайте, в основном у меня есть форма с текстовым полем и кнопки отправкой следующим образом:Слова с PHP
<form id="answer_form_<?php echo $id;?>" class="form" method="post"
action="<?php echo Mage::getUrl('productquestions/productquestions/saveanswers',array('product_questions_id'=>$id));?>">
<textarea id="txt_send" class="input-text required-entry " name="content"
id="answer_content_<?php echo $id;?>" title="Content"></textarea>
<button id="btn_send" style="float: left;" type="submit" class="button"
title="Send Message"><span><span><?php echo $this->__('Send Message') ?></span></span></button>
</form>
Что мне нужно сделать, это отфильтруйте слова из текстового поля, когда форма отправлена до, она сохраняется в базе данных, поэтому я создал некоторые php-функции и адаптировал их. Окончательный код:
function wordFilter($text) {
$filter_terms = array('\bass(es|holes?)?\b','\bshit(e|ted|ting|ty|head)\b');
$filtered_text = $text;
foreach($filter_terms as $word) {
$match_count = preg_match_all('/' . $word . '/i', $text, $matches);
for($i = 0; $i < $match_count; $i++) {
$bwstr = trim($matches[0][$i]);
$filtered_text = preg_replace('/\b' . $bwstr . '\b/', str_repeat("*", strlen($bwstr)), $filtered_text);
}
}
return $filtered_text;
}
if(isset($_POST['btn_send'])) {
$text = htmlentities($_POST['txt_send']);
$text = wordFilter($text);
}
Я просто добавил два слова для испытания до сих пор, и когда я делаю текст с обоими словами он сохраняется, как правило, не изменяя их «*****». Я избегал использования JS, поскольку это клиентская сторона.
Может ли кто-нибудь сказать мне, что мне не хватает?
Спасибо!
EDITED:
Как плагин Magento. Действие перенаправляет форму на: productquestions/productquestions/saveanswers',array('product_questions_id'=>$id));
и в зависимости от идентификатора изменяет URL-адрес. В качестве примера: siteurl/index.php/productquestions/productquestions/saveanswers/product_questions_id/40
на этой странице контроллера У меня есть функция:
public function saveanswersAction()
{
$answers = $this->getRequest()->getPost();
$answerCollection = array();
$model = Mage::getModel('productquestions/answers');
$id = $this->getRequest()->getParam('product_questions_id');
$model->setData('product_questions_id',$id);
$model->setData('answers',$answers['content']);
$model->save();
$answerCollection[] = $model;
}
отредактировано, спасибо! –