Thank you for your reply. I'm following your recommendations and I'm using the trunk editor, not the one on your blog.
I investigated this a little more and it seems the form can't validate : here's what I have :
$form = new TmpPostForm();
$formData = $this->_request->getPost();
if(!$form->isValid($formData))
{
echo "<br>Content : " . $form->getValue('content');
echo "<br>title : " . $form->getValue('title');
echo "<br><br>";
}
else
echo "not valid form";
$this->view->form = $form;
I always get "not valid form", what is strange considering the fact that I reduced the Editor element to a minimum :
// new class with dojo
class TmpPostForm extends Zend_Dojo_Form
{
public function init()
{
// Dojo-enable the form:
Zend_Dojo::enableForm($this);
$this->setName('Registration form');
$this->setAction('/petmanager/edit')
->setMethod('post');
// TITLE
$this->addElement(
'TextBox',
'title',
array(
'value' => '',
'label' => 'Title : ',
'trim' => true,
'required' => true,
'invalidMessage' => 'Please add a title',
'validators' => array(
array('StringLength', false, 4)
)
)
);
// POST CONTENT
$this->addElement(
'editor',
'content'
);
// POST DATE
$this->addElement(
'DateTextBox',
'date',
array(
'value' => '',
'label' => 'Post date',
'required' => true,
)
);
// THE POST ID (IF A POST IS EDITED)
$this->addElement(
'Hidden',
'id',
array(
'value' => ''
)
);
$this->addElement(
'SubmitButton',
'send',
array(
'required' => false,
'ignore' => true,
'label' => 'Send live',
)
);
}
}
I investigated this a little more and it seems the form can't validate : here's what I have :
$form = new TmpPostForm();
$formData = $this->_request->getPost();
if(!$form->isValid($formData))
{
echo "<br>Content : " . $form->getValue('content');
echo "<br>title : " . $form->getValue('title');
echo "<br><br>";
}
else
echo "not valid form";
$this->view->form = $form;
I always get "not valid form", what is strange considering the fact that I reduced the Editor element to a minimum :
// new class with dojo
class TmpPostForm extends Zend_Dojo_Form
{
public function init()
{
// Dojo-enable the form:
Zend_Dojo::enableForm($this);
$this->setName('Registration form');
$this->setAction('/petmanager/edit')
->setMethod('post');
// TITLE
$this->addElement(
'TextBox',
'title',
array(
'value' => '',
'label' => 'Title : ',
'trim' => true,
'required' => true,
'invalidMessage' => 'Please add a title',
'validators' => array(
array('StringLength', false, 4)
)
)
);
// POST CONTENT
$this->addElement(
'editor',
'content'
);
// POST DATE
$this->addElement(
'DateTextBox',
'date',
array(
'value' => '',
'label' => 'Post date',
'required' => true,
)
);
// THE POST ID (IF A POST IS EDITED)
$this->addElement(
'Hidden',
'id',
array(
'value' => ''
)
);
$this->addElement(
'SubmitButton',
'send',
array(
'required' => false,
'ignore' => true,
'label' => 'Send live',
)
);
}
}
> Date: Thu, 25 Sep 2008 10:02:41 -0400
> From: matthew@zend.com
> To: fw-mvc@lists.zend.com
> Subject: Re: [fw-mvc] Zend_Dojo Editor (next)
>
> -- Zladivliba Voskuy <nospampam@hotmail.fr> wrote
> (on Thursday, 25 September 2008, 11:31 AM +0200):
> > I have a problem with the dojo editor, how is it possible to get the input of
> > the dojo editor ?
>
> Are you using the Editor from trunk or from my blog? It makes a
> difference -- the one from trunk is more recent and fully tested.
>
> I've populated and pulled content from it just fine on my end; the only
> thing I can think of is that you weren't using the Dojo form decorator
> for your form -- which would mean that the onsubmit event that populates
> the hidden editor element would not trigger.
>
>
> > Here's my code element :
> >
> > $this->addElement(
> > 'editor',
> > 'content',
> > array(
> > 'editActionInterval' => 2,
> > 'focusOnLoad' => true,
> > 'height' => '250px',
> > 'styleSheets' => array('/js/custom/editor.css'),
> > ));
> >
> >
> > I build my form and tried to access the elements :
> > echo "Content : " . $form->getValue('content');
> > echo "title : " . $form->getValue('title');
> >
> > I have something for the title but nothing for the editor's content.
> >
> > I checked the html :
> > <input id="content" name="content" value="" type="hidden">
> > <textarea id="content-Editor" name="content[Editor]" type="text"></textarea>
> >
> > So I changed 'content' to 'content[Editor]' but I got nothing.
>
> Not necessary -- the Editor view helper actually attaches an event to
> the form's onsubmit hook that then populates the hidden element with the
> content of the Editor. (If you look in Firebug, the <textarea> actually
> disappears when the Editor dijit is created, which is why this is
> necessary.)
>
> > One other thing, when using the form->validation, if one element does't
> > validate, the content of the form is not redisplayed when using
> >
> > if(!$form->isValid($formData) )
> > $form->populate($formData);
>
> You don't need to populate() the form after calling isValid() -
> isValid() does that for you.
>
> --
> Matthew Weier O'Phinney
> Software Architect | matthew@zend.com
> Zend Framework | http://framework.zend.com/
Discutez gratuitement avec vos amis en vidéo ! Téléchargez Messenger, c'est gratuit !
没有评论:
发表评论