To add:
public function postnewAction() {
$request = $this->getRequest();
if(!$request->isPost()) {
$this->_helper->redirector('notauthorized', 'error');
}
$form = $this->_getNewMessageForm();
if (!$form->isValid($request->getPost())) {
$this->view->newMessageForm = $form;
return $this->render('index');
}
$values = $form->getValues(); Zend_Debug::dump($values); exit;
Outputs:
array(1) {
["message"] => string(27) "This is <a>linked text</a>."
}
On Wed, Jul 15, 2009 at 8:13 AM, J DeBord <[email protected]> wrote:
> Thanks for the reply Matthew.
>
> I'm using 1.84
>
> Still not working. After executing the code below (see form and controller
> code) and putting this into the textarea:
>
> <p>
> This is <a onClick="foo.bar()" href="http://foo.com/"
> title="Foo!">linked text</a>.
> </p>
>
> The following is entered into the MySql DB:
>
> [image:
> Edit]<http://localhost/phpmyadmin/tbl_change.php?db=jasondeb_jdnet_Zend&table=messages&primary_key=+%60messages%60.%60id%60+%3D+49&sql_query=SELECT+%2A+FROM+%60messages%60&goto=sql.php&token=e863630c23d959b05950ce1d215c6df5>
> [image:
> Delete]<http://localhost/phpmyadmin/sql.php?db=jasondeb_jdnet_Zend&table=messages&sql_query=DELETE+FROM+%60jasondeb_jdnet_Zend%60.%60messages%60+WHERE+%60messages%60.%60id%60+%3D+49+LIMIT+1&zero_rows=The+row+has+been+deleted&goto=sql.php%3Fdb%3Djasondeb_jdnet_Zend%26table%3Dmessages%26sql_query%3DSELECT%2B%252A%2BFROM%2B%2560messages%2560%26zero_rows%3DThe%2Brow%2Bhas%2Bbeen%2Bdeleted%26goto%3Dtbl_structure.php%26token%3De863630c23d959b05950ce1d215c6df5&token=e863630c23d959b05950ce1d215c6df5>
> 49 2009-07-15 07:54:32 1 This is <a>linked text</a>.
> Everything but the <a> tag is stripped as expected, but the href is still
> being stripped. Could it have something to do with the Zend_Db_Table's
> insert method?
>
> FORM:
>
> <?php
>
> class Form_NewMessage extends Form_Default {
>
> public function init() {
>
> $this->setMethod('post');
>
> $this->setAttrib('id', 'new_message');
> $this->setDescription("What are you doing? What's new?");
>
> $textarea = new Zend_Form_Element_Textarea('message', array(
> 'id' => 'message',
> 'filters' => array(
> array('StripTags', array(array('a'), array('href',
> 'title'))),
> 'StringTrim',
> ),
> 'validators' => array(),
> 'rows' => 2,
> 'cols' => 40,
> ));
>
> $this->addElement($textarea);
>
> $this->addElement('Submit', 'submit', array(
> 'Decorators' => array('ViewHelper'),
> 'class' => 'submit',
> 'Label' => 'Post Your Message!',
> 'Ignore' => true,
> ));
>
> $this->setDecorators(array(
> 'Description',
> 'FormElements',
> 'Fieldset',
> 'Form'
> ));
>
> }
> }
>
> CONTROLLER (postnewAction is the relevant piece):
>
> public function indexAction() {
>
> $this->view->headTitle('Message Board');
>
> $this->view->newMessageForm = $this->_getNewMessageForm();
>
> }
>
> public function postnewAction() {
>
> $request = $this->getRequest();
>
> if(!$request->isPost()) {
> $this->_helper->redirector('notauthorized', 'error');
> }
>
> $form = $this->_getNewMessageForm();
>
> if (!$form->isValid($request->getPost())) {
> $this->view->newMessageForm = $form;
> return $this->render('index');
> }
>
> $values = $form->getValues();
> $values['user_id'] = Zend_Auth::getInstance()->getIdentity()->id;
> $model = new Model_DbTable_Messages;
> $result = $model->insert($values);
>
> if(!$result) {
> throw new Zend_Exception('Problem adding message to database');
> }
>
> $this->_helper->redirector('index', 'messageboard');
>
> }
>
> protected function _getNewMessageForm() {
>
> $form = new Form_NewMessage;
> $form->setAction('/messageboard/postnew/');
>
> return $form;
> }
>
>
> Again, I really appreciate your help.
>
> Thanks!
>
> J
>
>
> On Tue, Jul 14, 2009 at 11:06 PM, Matthew Weier O'Phinney <
> [email protected]> wrote:
>
>> -- J DeBord <[email protected]> wrote
>> (on Tuesday, 14 July 2009, 08:29 PM +0200):
>> > I've tried to make StripTags leave the href attribute, but it strips it
>> out. I
>> > can't find the right syntax or it just doesn't work. The <a> tag is left
>> > intact, every other tag is stripped, but the href and title get stripped
>> as
>> > well.
>> >
>> > I've also used the fluid interface when adding the Textarea, but changed
>> it to
>> > what is below in hopes that it would work.
>> >
>> > What am I doing wrong?
>>
>> What version of ZF are you using?
>>
>> I did the following using current trunk:
>>
>> $element = new Zend_Form_Element_Textarea('foo', array(
>> 'filters' => array(
>> array('StripTags', array(array('a'), array('href', 'title'))),
>> 'StringTrim',
>> ),
>> 'value' => '<p>
>> This is <a onClick="foo.bar()" href="http://foo.com/"
>> title="Foo!">linked text</a>.
>> </p>',
>> ));
>> echo $element->getValue();
>>
>> and got exactly what I expected:
>>
>> This is <a href="http://foo.com/" title="Foo!">linked text</a>.
>>
>>
>> > <?php
>> >
>> > class Form_NewMessage extends Form_Default {
>> >
>> > public function init() {
>> >
>> > $this->setMethod('post');
>> >
>> > $this->setAttrib('id', 'new_message');
>> >
>> > $textarea = new Zend_Form_Element_Textarea('message');
>> > $textarea->setDecorators($this->_defaultDecorators);
>> >
>> > $stripTags = new Zend_Filter_StripTags(array('a'), array('href',
>> > 'title'));
>> >
>> > $textarea->addFilter('StringTrim');
>> > $textarea->addFilter($stripTags);
>> > $textarea->setValidators(array());
>> > $textarea->setRequired(true);
>> > $textarea->setAttrib('cols', 40);
>> > $textarea->setAttrib('rows', 2);
>> >
>> > $this->addElement($textarea);
>> >
>> > $this->addElement('Submit', 'submit', array(
>> > 'Decorators' => array('ViewHelper'),
>> > 'class' => 'submit',
>> > 'Label' => 'Post Your Message!',
>> > 'Ignore' => true,
>> > ));
>> >
>> > $this->setDecorators(array(
>> > 'Description',
>> > 'FormElements',
>> > 'Fieldset',
>> > 'Form'
>> > ));
>> >
>> > }
>> > }
>>
>> --
>> Matthew Weier O'Phinney
>> Project Lead | [email protected]
>> Zend Framework | http://framework.zend.com/
>>
>
>