Как добавить «простой текстовый узел» в Zend-форму? - PullRequest
20 голосов
/ 04 марта 2010

Я пытаюсь добавить узел простого текста в форме Zend - цель состоит в том, чтобы отображать только статический текст.

Проблема в том, что я не знаю ни одного такого способа сделать это.

Я использовал «описание», но ДОЛЖЕН быть присоединен к элементу формы.

Есть ли способ просто отобразить некоторый текст как часть формы? Zend рассматривает все как элемент формы, поэтому я не могу просто распечатать его.

Например:

Следующее будет проверять ваши способности на то и другое. , , ,

и т.д ...

Есть мысли?

Ответы [ 7 ]

38 голосов
/ 12 октября 2010

В Zend есть помощник для представления заметок формы (Zend_View_Helper_FormNote), который можно использовать для добавления текста.

Просто создайте новый элемент формы (/application/forms/Element/Note.php):

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

В вашей форме:

$note = new Application_Form_Element_Note(
    'test',
    array('value' => 'This is a <b>test</b>')
);
$this->addElement($note);
9 голосов
/ 12 июля 2012

Добавление скрытого элемента с неэкранированным описанием делает вещь.

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

Работает отлично. Он все еще прикреплен к элементу, который, однако, не отображается таким образом.

Код взят из: http://paveldubinin.com/2011/04/7-quick-tips-on-zend-form/

6 голосов
/ 09 апреля 2013

Немного опоздал, но думал, что все равно добавлю это на благо сообщества.

Аина ударила ноготь по голове. FormNote - это то, что вам нужно, если вы хотите использовать текст в Zend_Form. Тем не менее, вы можете использовать его без необходимости расширять Zend_Form_Element_Xhtml. Смотрите пример ниже:

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

Обратите внимание, что вы можете использовать как текст, так и html с помощником formNote.

6 голосов
/ 18 марта 2010

Возможно, есть лучший способ, но я создал абзац, используя пользовательский элемент формы и помощник вида. Похоже, много кода для чего-то такого простого. Пожалуйста, дайте мне знать, если вы нашли более простой способ сделать это.

//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;
    }

}
5 голосов
/ 15 ноября 2013

Эта функциональность встроена в Zend через 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>');
3 голосов
/ 04 марта 2010

Я столкнулся с той же проблемой и решил, что лучше вообще не использовать Zend_Form, а использовать помощники для непосредственного просмотра (как это делает Ruby on Rails) и проверки на модели.

0 голосов
/ 12 декабря 2018

Этот однострочный у меня работает:

$objectForm->addElement(new Zend_Form_Element_Note('note', array('value' => 'Hello World')));
...