Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does one add a 'plain text node' to a zend form?

I'm trying to add a plain text node in a zend form - the purpose is to only dispay some static text.

The problem is - im not aware of any such way to do it.

I have used 'description' but that HAS to be attached to a form element.

Is there any way to simply display some text as part of a form? Zend considers everything as a form element so I cannot just print it out.

Eg:

The following will test your ability on so and so. . . .

etc...

Any thoughts?

like image 406
Mallika Iyer Avatar asked Mar 04 '10 17:03

Mallika Iyer


5 Answers

Zend has a form note view helper (Zend_View_Helper_FormNote), which you can use to add text.

Just create a new form element (/application/forms/Element/Note.php):

class Application_Form_Element_Note extends Zend_Form_Element_Xhtml  
{  
    public $helper = 'formNote';  
}

In your form:

$note = new Application_Form_Element_Note(
    'test',
    array('value' => 'This is a <b>test</b>')
);
$this->addElement($note);
like image 174
Aine Avatar answered Nov 06 '22 13:11

Aine


Adding a hidden element with non-escaped description does the thing.

$form->addElement('hidden', 'plaintext', array(
    'description' => 'Hello world! <a href="#">Check it out</a>',
    'ignore' => true,
    'decorators' => array(
        array('Description', array('escape'=>false, 'tag'=>'')),
    ),
));

Works perfectly. It is still attached to an element, which is, however, not rendered this way.

Code taken from: http://paveldubinin.com/2011/04/7-quick-tips-on-zend-form/

like image 20
Zajo Avatar answered Nov 06 '22 13:11

Zajo


There might be a better way, but I created a paragraph by using a custom form element and view helper. Seems like alot of code for something so simple. Please let me know if you've found a more simplistic way to do it.

//From your form, add the MyParagraph element
$this->addElement(new Zend_Form_Element_MyParagraph('myParagraph'));

class Zend_Form_Element_MyParagraph extends Zend_Form_Element
{
    public $helper = 'myParagraph';
    public function init()
    {
        $view = $this->getView();
    }
}

class Zend_View_Helper_MyParagraph extends Zend_View_Helper_FormElement {

    public function init() {
    }

    public function myParagraph() {
        $html = '<p>hello world</p>';
        return $html;
    }

}
like image 32
Chris Avatar answered Nov 06 '22 13:11

Chris


A little late but thought I'd throw it in anyway for the benefit of the community.

Aine has hit the nail on the head. FormNote is what you need if you want to use text in Zend_Form. However, you can use it without needing to extend Zend_Form_Element_Xhtml. See example below:

$text = new Zend_Form_Element_Text('myformnote');
$text->setValue("Text goes here")
     ->helper = 'formNote';

Note that you can use both text and html with the formNote helper.

like image 6
Rijndael Avatar answered Nov 06 '22 13:11

Rijndael


This functionality is built into Zend via Zend_Form_Element_Note.

$note = new Zend_Form_Element_Note('forgot_password');
$note->setValue('<a href="' . $this->getView()->serverUrl($this->getView()->url(array('action' => 'forgot-password'))) . '">Forgot Password?</a>');
like image 5
axiom82 Avatar answered Nov 06 '22 14:11

axiom82