Zend From:如何只显示表单的一个元素?

时间:2013-06-06 08:40:46

标签: zend-framework zend-form-element

我有一个表现形式:

// Email
    $email = $this->createElement('text', 'email');
    $email->setLabel('Адрес электронной почты:')
        ->addValidator('EmailAddress')
        ->addValidator('StringLength', FALSE, array(6, 30))
        ->setRequired(TRUE);

    // Пароль
    $password = $this->createElement('password', 'password');
    $password->setLabel('Пароль:')
        ->addValidator('StringLength', FALSE, array(6, 30))
        ->setRequired(TRUE);

    // Шрифт капчи
    $fonts = scandir(APPLICATION_PATH . '/other/fonts/');
    $font  = APPLICATION_PATH . '/other/fonts/' . $fonts[rand(2, sizeof($fonts) - 1)];

    // Инициализация капчи
    $captcha = new Zend_Form_Element_Captcha(
        md5($_SERVER["REMOTE_ADDR"] . date('d.m.Y')),
        array('label'    => 'Введите код с картинки:',
              'required' => TRUE,
              'captcha'  => array(
                  'captcha'  => 'Image',
                  'FontSize' => rand(25, 30),
                  'wordLen'  => rand(4, 6),
                  'timeout'  => 300,
                  'font'     => $font,
                  'imgDir'   => 'img/captcha/',
                  'imgUrl'   => '/img/captcha/',
              )));

    $submit = $this->createElement('submit', 'submit_button', array(
                                                                   'label' => 'Enter',
                                                              ));

我有一个自己的html代码用于此表单,它包含在视图脚本中,但captcha元素是动态的。有没有办法只显示captcha元素html代码?像这样:

<!-- my html code -->
<?php $this->myForm->captcha; ?>
<!-- my html code -->

感谢。

1 个答案:

答案 0 :(得分:2)

是的,你可以使用如下

您需要将表单传递给视图脚本才能使其正常工作。

public function someAction()
{
    $this->view->form = new Form_Name(); // form class name
}

在您的视图脚本中,您可以通过

接收元素
<table>
<tr>
    <td><?= $this->form->getElement('captcha'); ?></td>
</tr>

</table>

请告诉我是否可以为您提供更多帮助。