public function render(ElementInterface $element)
{
$name = $element->getName();
if (empty($name) && $name !== 0) {
throw new Exception\DomainException(sprintf(
'%s requires that the element has an assigned name; none discovered',
__METHOD__
));
}
$attributes = $element->getAttributes();
$attributes['name'] = $name;
$content = (string) $element->getValue();
$escapeHtml = $this->getEscapeHtmlHelper();
return sprintf(
'<textarea %s>%s</textarea>',
$this->createAttributesString($attributes),
$escapeHtml($content)
);
}
$escapeHtml = $this->getEscapeHtmlHelper();
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
use Zend\Form\View\Helper\FormTextarea;
use Zend\Form\ElementInterface;
use HTMLPurifier;
use HTMLPurifier_Config;
use HTMLPurifier_ConfigSchema;
use Soflomo\Purifier\View\Helper\Purifier;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorAwareTrait;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\AbstractPluginManager;
class PurefierFormTextarea extends FormTextarea implements ServiceLocatorAwareInterface
{
protected $serviceLocator = null;
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->serviceLocator = $serviceLocator;
return $this;
}
public function getServiceLocator()
{
return $this->serviceLocator;
}
public function getMainServiceLocator()
{
if ($this->serviceLocator instanceof AbstractPluginManager) {
return $this->serviceLocator->getServiceLocator();
}
return $this->serviceLocator;
}
public function render(ElementInterface $element)
{
// ...
$this->getMainServiceLocator()->get('HTMLPurifier');
// ...
}
}
1. По поводу того где и как создавать HtmlPurifier, посмотрите:
https://github.com/Soflomo/Purifier
2. Напишите свой класс для MyFormTextarea:
В конфигурационном файле модуля укажите свой помощник представления:
В Вашем случае достаточно получить HtmlPurifier из ServiceManager'a, обработать им $content, а $this->getEscapeHtmlHelper(), скорее всего и вызывать не придётся. Хотя, если честно не понимаю, зачем Вы хотите делать это внутри хелпера.
$purifier = $this->getServiceLocator()->get('HTMLPurifier');