Написать гиперссылку внутри Zend Form? - PullRequest
15 голосов
/ 04 мая 2011

Я использую Zend-Framework в моем проекте. Я сделал форму входа в систему, используя Zend Form, которая содержит поля User Id и Passwords с кнопкой отправки. Все отлично работает в форме входа.

Как добавить две гиперссылки в форму входа , одну для Зарегистрироваться и другую для Забыли пароль ?

Ответы [ 5 ]

11 голосов
/ 11 мая 2011

Я сталкивался с той же проблемой ранее и решил ее, создав собственный Zend_Form_Element_Html следующим образом:

class Zend_Form_Element_Html extends Zend_Form_Element_Xhtml {
    /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formNote';

    public function isValid($value, $context = null) {
        return true;
    }
}

Итак, в вашей форме вам просто нужно сделать следующее:

$tag = new Zend_Form_Element_Html('forgetPassword');
$tag->setValue('<a href="/forgotten-pwd">Forgotten your password?</a>');
$this->addElement($tag);

Надеюсь, это поможет!

7 голосов
/ 04 мая 2011

В вашем файле viewscript, где вы печатаете форму, например, login.phtml

echo $this->form;

Вы можете указать любую другую HTML-разметку, например, ссылки

echo "<p><a href='".$this->url ( array ('controller' => 'authentication',
                                        'action' => 'lostPW' ) )."'>
      Lost pw </a></p>";

Таким образом, вы на самом деле пишете не в самой форме, а в сценарии представления, в котором вы выводите форму.

4 голосов
/ 04 мая 2011

Попробуйте это:

$passwordElement->setDescription('<a href="">Forgot password?</a>');
$passwordElement->getDecorator('Description')->setOption('escape', false);

Описание Decorator добавит этот текст рядом с вашим полем.

1 голос
/ 23 сентября 2014

Только для декораторов используйте непосредственно в форме:

        $this->addElement(new Zend_Form_Element_Note(array(
            'name' => 'forgotten',
            'value' => __('Forgot your password?'),
            'decorators' => array(
                array('ViewHelper'),
                array('HtmlTag', array(
                    'tag' => 'a',
                    'href' => $this->getView()->url(array(
                        'remind'
                    ))
                )),

            )
        )), 'forgotten');
1 голос
/ 11 мая 2011

Вы можете использовать Zend_Form_Decorator_ViewScript

Или создайте пользовательский элемент Zend_Form_Element для отображения элементов HTML или ViewScript.

...