Форма зенда: Добавьте ссылку направо от текстового поля

d = foverlaps(df1, df2)[, .N, by = Date]
5
задан 13 March 2009 в 17:21
поделиться

3 ответа

Посмотрите мой ответ на этот поток в списке рассылки и моем сообщении в блоге об этом. Это - в основном тот же процесс, который описал Aaron.

Можно также пойти декоратором путь, с помощью свойства описания для содержания ссылки (не протестированный):

<?php
$foo = new Zend_Form_Element_Text('name');
$foo->setLabel('Name')
    ->setDescription('<a href="#">Link</a>')
    ->setDecorators(array(
        'ViewHelper',
        array('Description', array('escape' => false, 'tag' => false)),
        array('HtmlTag', array('tag' => 'dd')),
        array('Label', array('tag' => 'dt')),
        'Errors',
      ));
$form->addElement($foo);

Я не уверен если 'tag'=>false в Description декоратор работал бы, но это стоит того, чтобы попытаться. Извините я не могу протестировать это теперь, мое поле разработки повреждается в данный момент. Если это перестало работать, попробуйте ручной метод рендеринга декоратора, описанный в тех двух ссылках.

24
ответ дан 18 December 2019 в 05:44
поделиться

Я думаю, что Вы ищете полный контроль над декоратором с помощью Сценария Представления:

Руководство платформы зенда

В основном Вы хотите установить viewScript свойство элемента к пути к Вашему сценарию и затем передать любую дополнительную информацию, которую Вы хотели бы отправить, возможно, linkHref или заголовок ссылки, которую Вы создаете.

$name = new Zend_Form_Element_Text( 'name' );
$name->setLabel( 'Name' );   
$name->viewScript = 'path/to/viewScript.phtml';
$name->decorators = array('ViewScript', array('linkHref' => '#',
                                              'linkTitle' => 'My Link');
$this->addElements( $name );
$this->addDisplayGroup( array( 'name' ), 'people');

Затем Ваш viewScript был бы похож на это, я не уверен, как все Помощники в экземпляре Zend_Form_Element, но отчасти как это:

<dt><?= $this->formLabel($this->element->getName(),
                     $this->element->getLabel()) ?></dt>
<dd><?= $this->{$this->element->helper}(
                     $this->element->getName(),
                     $this->element->getValue(),
                     $this->element->getAttribs()
                ) ?>
<a href="<?= $this->linkHref; ?>"><?= $this->linkTitle; ?></a>
<?= $this->formErrors($this->element->getMessages()) ?>

</dd>

Иногда, делая его в viewScript он лучше, потому что это дает Вам 100%-й контроль элемента, все еще будучи симпатичным DRY.

5
ответ дан 18 December 2019 в 05:44
поделиться

Просто чтобы добавить некоторую поддержку в пост Аарона, после нескольких часов головы, чтобы сделать что-то действительно простое (это, кажется, отрицает точку имения структуры), если вы обнаружите, что это не Работайте над своими флажками, то это потому, что вы должны использовать это в своем .phtml (на основе примера Aaron):

<dt><?= $this->formLabel($this->element->getName(),
                     $this->element->getLabel()) ?></dt>
<dd><?= $this->{$this->element->helper}(
                     $this->element->getName(),
                     $this->element->getValue(),
                     $this->element->getAttribs(),
                     $this->element->options
                ) ?>
<a href="<?= $this->linkHref; ?>"><?= $this->linkTitle; ?></a>
<?= $this->formErrors($this->element->getMessages()) ?>

</dd>

Параметры! ОПЦИИ! ОПЦИИ! Где ты был когда мне нужно было найти тебя?! Так что не забудьте добавить следующее в свой помощник, если вы используете флажки:

$this->element->options

Это хорошо работает для добавления условий флажка Zend_Form_Element_Checkbox (это для SEO) (это для SEO) (это для SEO) (это для SEO) (это для SEO)

1
ответ дан 18 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: