1

私はゼンドフォームを持っています:

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

ありがとう。

4

1 に答える 1

2

はい、以下のように使用できます

フォームを機能させるには、フォームをビュー スクリプトに渡す必要があります。

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

ビュースクリプトでは、次の方法で要素を受け取ることができます

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

</table>

もっとお手伝いできることがあれば教えてください。

于 2013-06-06T08:58:29.830 に答える