任何人都知道如何使用Zend_Form和jquery简单地创建一个表单?我想使用Zend_Form来验证表单,所以我不需要在JavaScript和PHP中使用双脚本表单.
谢谢,
Ivo Trompert
我有一个表单,用户可以在其中选中"创建新地址"复选框,然后可以在同一表单中填写此新地址的字段.
现在,我想仅在选中复选框时验证此新地址的字段.否则,应该忽略它们.
如何使用Zend_Form和Zend_Validate来做到这一点?
谢谢!
我想在表单中添加一个简单的复选框:
$element = new Zend_Form_Element_Checkbox('dont');
$element->setDescription('Check this box if you don\'t want to do this action.');
$form->addElement($element);
Run Code Online (Sandbox Code Playgroud)
但是,这就是html的样子:
<dt id="dont-label"> </dt>
<dd id="dont-element">
<input type="hidden" name="dontAttach" value="0">
<input type="checkbox" name="dontAttach" id="dontAttach" value="1">
<p class="description">Don't attach a bulletin. I only want to send an email.</p>
</dd>
Run Code Online (Sandbox Code Playgroud)
这个问题是我使用jQuery来隐藏DT 内部标签和DD内部隐藏元素的所有DT/DD (因此我的html将验证并且隐藏的元素不会占用空间这页纸).有没有办法使用a Zend_Form_Element_Checkbox而不必显示隐藏的输入元素?我宁愿不搞乱我的jQuery代码添加更多警告,但如果必须的话,我会.
显然,我不能/不应该在checkbox元素之前删除隐藏元素.所以这是我的jQuery代码隐藏所有隐藏的表单元素在页面上显示:
//fix zf hidden element from displaying
$('input[type=hidden]').filter(function() {
var noLabel = $(this).closest('dd').prev('dt').html() === ' ';
var onlyChild = $(this).is(':only-child');
if (noLabel && onlyChild) {
return true;
}
return false; …Run Code Online (Sandbox Code Playgroud) 我正在构建一个我希望用作"标签式浏览"功能的界面.这些选项卡中的每一个都已编写为操作,选项卡式界面可作为各个选项卡的链接.我决定尝试为这个控制器编写"索引"页面 - 将所有选项卡的内容放入隐藏的div并使用jQuery在它们之间交换,但是一旦我开始使用动作视图助手 - 我遇到了很多人说这是不好的做法.(见本文)
其中一些操作会构建表单 - 从模型中获取一些数据等以显示.我希望每个动作都能继续自行运行(一些解析形式).
浏览到/ item应该为您提供选项卡式菜单,以及隐藏标记中所有div的内容 - 其中/ item/tab2是特定操作(例如表单提交).
另一个复杂/警告 - 如果用户无权访问该"选项卡",某些操作将抛出Access Exceptions.我不想两次将访问检查构建到系统中(因此显示一个包含空内容的选项卡).
我只想弄清楚处理这类事情的最佳做法是什么,我认为动作助手可能就是这样.如果我尝试使用View Helpers - 我开始想知道这是否是组装Zend_Form的正确位置.
有没有人对"正确"的方法有任何建议,不使用Zend_View_Helper_Action?
在我的表格中,我有这个代码;
// Add the submit button
$element = $this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Add new material'
));
$element->removeDecorator('label');
Run Code Online (Sandbox Code Playgroud)
但是,表单仍然使用标签之间的label元素进行渲染.
我究竟做错了什么?
我有一个表单,我正在尝试设置该操作.我想使用我在引导程序中创建的路径,在我的表单文件(扩展Zend_Form)中而不是在控制器或视图中声明操作.通常当我想使用路线时,我会做类似的事情
$this->url(array(), 'route-name');
Run Code Online (Sandbox Code Playgroud)
在视图中,或
$this->_helper->url(array(), 'route-name');
Run Code Online (Sandbox Code Playgroud)
在控制器中.
如何从Zend_Form中调用路由?
编辑:我已经放弃了尝试将路由加载到zend_form.也许在将来的版本中可能有一个功能可以轻松地做到这一点?
我已经为我的表单创建了一个viewScript并在其中设置了路径:在表单init函数中:
$this->setDecorators(array(
'PrepareElements',
array(
'ViewScript', array(
'viewScript' => 'forms/formView.phtml'
))));
Run Code Online (Sandbox Code Playgroud)
并在视图文件中:
<form method="post" action="<?php echo $this->url(array(), 'route-name'); ?>" enctype="application/x-www-form-urlencoded">
<?php
foreach ($this->element->getElements() as $element)
{
echo $element;
}
?>
</form>
Run Code Online (Sandbox Code Playgroud) 我知道我可以像这样单独从每个元素中删除多余的东西
$button ->removeDecorator('DtDdWrapper')
->removeDecorator('HtmlTag')
->removeDecorator('Label');
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以以zend形式为我的所有元素实现相同的目标?
如何删除包裹表单的dl?
我是新手,zend装饰malarchy,但我有两个重要问题,我无法理解.问题一之后是一些例子
$decorate = array(
array('ViewHelper'),
array('Description'),
array('Errors', array('class'=>'error')),
array('Label', array('tag'=>'div', 'separator'=>' ')),
array('HtmlTag', array('tag' => 'li', 'class'=>'element')),
);
...
$name = new Zend_Form_Element_Text('title');
$name->setLabel('Title')
->setDescription("No --- way");
$name->setDecorator($decorate);
Run Code Online (Sandbox Code Playgroud)
哪个输出
<li class="element">
<label for="title" class="required">Title</label>
<input type="text" name="title" id="title" value="">
<p class="hint">No --- way</p>
<ul class="error">
<li>Value is required and can't be empty</li>
</ul>
</li>
Run Code Online (Sandbox Code Playgroud)
我如何包装label和input围绕div标签?所以输出如下:
<li class="element">
<div>
<label for="title" class="required">Title</label>
<input type="text" name="title" id="title" value="">
</div>
<p class="hint">No --- way</p>
<ul class="error">
<li>Value is …Run Code Online (Sandbox Code Playgroud) Zend Framework 1.12中有一个Zend_Form_Element_Multiselect.如何在Zend Framework 2.0中实现相同的结果?我只看到Zend\Form\Element\MultiCheckbox和Zend\Form\Element\Select
我想强制Zend表单进入Twitter Bootstrap风格.我目前遍历表单字段并将表单信息写入我的bootstrap div结构.
我在Zend Framework 1(!)中看到有一种方法可以在装饰器中执行此操作.但出于某种原因,版本2的文档并没有涵盖这一点......
我想做这样的事情:
protected $_format = '<label for="%s">%s</label>'
. '<input id="%s" name="%s" type="text" value="%s"/>';
public function render($content)
{
$element = $this->getElement();
$name = htmlentities($element->getFullyQualifiedName());
$label = htmlentities($element->getLabel());
$id = htmlentities($element->getId());
$value = htmlentities($element->getValue());
$markup = sprintf($this->_format, $name, $label, $id, $name, $value);
return $markup;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
zend-form ×10
php ×6
checkbox ×1
decorator ×1
jquery ×1
multi-select ×1
validation ×1
zend-route ×1