Удалите data-toggle="modal"
из тега <a>
и выполните редактирование onclick
на основе идентификатора
<td>
<a id="edit-form" href="#" class="btn btn-warning btn-sm">Edit</a>
</td>
JS
$('#edit-form').click(function() {
$('#hidden_field_id').val(your-value);
$('#myModal').modal('show');
});
Я пытался и, в конечном счете, не смог достичь этого сам, используя тот же подход. Казалось бы, самый простой способ сделать это - сделать:
...
$submit->setLabel('<span>My Button</span>');
...
Однако, интервал будет экранирован. Совершенно возможно отключить экранирование метки декоратора, однако добавление декоратора меток приводит к неверному выводу, например:
$decorator = array(
array('ViewHelper'),
array('HtmlTag', array('tag' => 'li')),
array('Label', array('escape' => false))
);
$submit = new Zend_Form_Element_Button('submit');
$submit->setLabel('<span>My Button</span>');
$submit->setDecorators($decorator);
$submit->setAttrib('type', 'submit');
... рендеринг:
<label for="submit" class="optional"><span>My Button</span></label>
<li>
<button name="submit" id="submit" type="submit"><span>My Button</span></button>
</li>
... что, помимо семантически неверного (легко исправимо), все еще экранирует теги span внутри элемента.
Итак, что вы делаете?
Ну, я думаю, что лучший подход (и это мой мета-совет, когда дело доходит до жесткого контроля над рендерингом Zend_Form) использовать декоратор ViewScript .
$submit = new Zend_Form_Element_Button('submit');
$submit->setLabel('My Button');
$submit->setDecorators(array(array('ViewScript', array('viewScript' => '_submitButton.phtml'))));
$submit->setAttrib('type', 'submit');
... затем в _submitButton.phtml определить следующее:
<li>
<?= $this->formLabel($this->element->getName(), $this->element->getLabel()); ?>
<button
<?php
$attribs = $this->element->getAttribs();
echo
' name="' . $this->escape($this->element->getName()) . '"' .
' id="' . $this->escape($this->element->getId()) . '"' .
' type="' . $this->escape($attribs['type']) . '"';
?>
<?php
$value = $this->element->getValue();
if(!empty($value))
{
echo ' value="' . $this->escape($this->element->getValue()) . '"';
}
?>
>
<span>
<?= $this->escape($this->element->getLabel()); ?>
</span>
</button>
</li>
_submitButton. Файл phtml должен находиться в каталоге скриптов вида (лучше всего добавить конкретный для декораторов форм, используя $ view-> addScriptPath ('/ path / to / my / form / decorators')
).
Это должно сделать то, что вы ищете. Я только начал смотреть на декоратор ViewScript из-за проблем с гибкостью, с которыми я сталкиваюсь в работе. Вы заметите, что мой сценарий не такой гибкий и, конечно, не в BNF, учитывая все элементы, которые могут быть заполнены в объекте element. Тем не менее, это начало, и оно решает вашу проблему.
Мы только начали смотреть на декоратор ViewScript из-за проблем с гибкостью, с которыми я сталкиваюсь в работе. Вы заметите, что мой сценарий не такой гибкий и, конечно, не в BNF, учитывая все элементы, которые могут быть заполнены в объекте element. Тем не менее, это начало, и оно решает вашу проблему. Мы только начали смотреть на декоратор ViewScript из-за проблем с гибкостью, с которыми я сталкиваюсь в работе. Вы заметите, что мой сценарий не такой гибкий и, конечно, не в BNF, учитывая все элементы, которые могут быть заполнены в объекте element. Тем не менее, это начало, и оно решает вашу проблему.Я бы добавил класс к кнопке, а затем определил этот класс в вашем CSS, чтобы он действовал как промежуток. Я уверен, что вы хотите сделать больше, чем просто вставить его в промежуток.
Просто добавьте еще один вызов setAttrib ():
$submit->setAttrib('class', 'submitButton');
Затем в вашем CSS:
.submitButton {
display:inline;
font-weight:bold; /* Or whatever you're wanting to do */
}
Я добавил display: inline, так как это будет сделать кнопку действовать как промежуток. Это должно как минимум начать. Конечно, вы также можете использовать CSS для идентификатора кнопки, просто используйте display: inline, чтобы получить поведение span.
Можно сделать так:
$this->addElement(new Zend_Form_Element_Button(
'send',
array(
'label' => '<span>registrieren</span>',
'class' => 'button-red',
'type' => 'submit',
'escape' => false,
'required' => false,
'ignore' => false,
)
));
Просто экранирование ярлыка работает нормально. Он ломается только тогда, когда кто-то начинает возиться с декоратором меток (обычно это происходит при настройке тегов)
. Вы можете использовать функцию Zend_Form setElementDecorators () и исключить некоторые элементы из стиля. Прочтите Пример № 3 Установка декораторов для некоторых элементов в Zend_Form Manual (включая Примечание!) Для получения более подробной информации.
Для тех, кто все еще не понимает, вот пример кода для стилизации формы в виде таблицы с кнопкой, заключенной в двойной диапазон:
//(...)putting some other elements in the form first
//now add submit button
$form ->addElement('button', 'submit', array(
'label' => '<span><span>SUBMIT</span></span>',
'value' => 'submit'
));
$form
//set decorators for non-button elements
->setElementDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array('Label', array('tag' => 'td')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))), array('submit'), false)
//and then for button elements only
->setElementDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))), array('submit'), true)
//and finally for the form
->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'table')),
'Form'
));
где $ form - это элемент Zend_Form . Надеюсь это поможет!