我正在尝试以zend形式添加纯文本节点 - 目的是仅显示一些静态文本.
问题是 - 我不知道有任何这样的方法来做到这一点.
我使用了'description'但是要将它附加到表单元素.
有没有办法简单地将一些文本显示为表单的一部分?Zend将所有内容都视为表单元素,因此我无法将其打印出来.
例如:
以下将测试你的能力....
等等...
有什么想法吗?
我将此ViewScript用于我的标准表单元素:
<div class="field" id="field_<?php echo $this->element->getId(); ?>">
<?php if (0 < strlen($this->element->getLabel())) : ?>
<?php echo $this->formLabel($this->element->getName(), $this->element->getLabel());?>
<?php endif; ?>
<span class="value"><?php echo $this->{$this->element->helper}(
$this->element->getName(),
$this->element->getValue(),
$this->element->getAttribs()
) ?></span>
<?php if (0 < $this->element->getMessages()->length) : ?>
<?php echo $this->formErrors($this->element->getMessages()); ?>
<?php endif; ?>
<?php if (0 < strlen($this->element->getDescription())) : ?>
<span class="hint"><?php echo $this->element->getDescription(); ?></span>
<?php endif; ?>
</div>
Run Code Online (Sandbox Code Playgroud)
尝试单独使用ViewScript会导致错误:
表单捕获的异常:找不到文件装饰器...无法呈现文件元素
看看这个FAQ揭示了我的部分问题,我更新了我的表单元素装饰器,如下所示:
'decorators' => array(
array('File'),
array('ViewScript', array('viewScript' => 'form/field.phtml'))
)
Run Code Online (Sandbox Code Playgroud)
现在它将文件元素渲染两次,一次在我的视图脚本中,以及在视图脚本之外使用文件元素的额外元素:
<input type="hidden" name="MAX_FILE_SIZE" value="8388608" id="MAX_FILE_SIZE" …Run Code Online (Sandbox Code Playgroud) zend-framework decorator zend-form zend-view zend-form-element
我希望能够使用数组表示法向我的表单添加一个隐藏的表单字段.我可以用这样的HTML做到这一点:
<input type="hidden" name="contacts[]" value="123" />
<input type="hidden" name="contacts[]" value="456" />
Run Code Online (Sandbox Code Playgroud)
提交表单时,$_POST数组将包含分组为数组的隐藏元素值:
array(
'contacts' => array(
0 => '123'
1 => '456'
)
)
Run Code Online (Sandbox Code Playgroud)
我可以在表单中添加一个隐藏元素,并指定数组表示法,如下所示:
$form->addElement('hidden', 'contacts', array('isArray' => true));
Run Code Online (Sandbox Code Playgroud)
现在,如果我用数组填充该元素,我希望它应该将值存储为数组,并将元素呈现为上面显示的HTML:
$form->populate($_POST);
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.我正在使用的Zend Framework版本中可能存在错误.我这样做了吗?我该怎么办?我怎样才能达到上述结果?如果必须的话,我愿意创建自定义表单元素.请告诉我我需要做什么.
我的Zend表单中有两个字段,我想应用验证规则,确保用户输入这两个字段中的任何一个.
$companyname = new Zend_Form_Element_Text('companyname');
$companyname->setLabel('Company Name');
$companyname->setDecorators($decors);
$this->addElement($companyname);
$companyother = new Zend_Form_Element_Text('companyother');
$companyother->setLabel('Company Other');
$companyother->setDecorators($decors);
$this->addElement($companyother);
Run Code Online (Sandbox Code Playgroud)
如何添加一个可以查看这两个字段的验证器?
目前,我有文章和标签表.我试图自动填充"标签"表单元素作为文章表单上的选择框.从数据库表中设置标签选择框的值选项的最佳方法是什么,然后让文章在"绑定"方法调用期间自动绑定标签数据?
Article.php
<?php
// Article class
class Article {
/**
*
* @var \Doctrine\Common\Collections\Collection|Tag[]
*
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="articles")
* @Orm\JoinTable(name="rel_article_tag", joinColumns={@ORM\JoinColumn(name="article_id", referencedColumnName="article_id")}, inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="tag_id")})
*
* @Form\Required(false)
* @Form\Type("Zend\Form\Element\Select")
* @Form\Options({"label":"Tags: ")
* @Form\Attributes({"id":"tags", "data-placeholder":"Choose tags...", "multiple" : "multiple", "class" : "chosen-select"})
*/
private $tags;
public function __construct()
{
$this->tags = new ArrayCollection();
}
public function getTags()
{
return $this->tags;
}
public function addTags($tags)
{
$this->tags = $tags;
}
public function removeTags()
{
$this->tags = new ArrayCollection();
}
}
Run Code Online (Sandbox Code Playgroud)
ArticleController.php …
php zend-form zend-form-element doctrine-orm zend-framework2
我想在表单中添加一个简单的复选框:
$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) 我需要从表中显示一些预先存在的数据,但需要禁用它们以防止用户编辑它们.所以我禁用了他们
$form -> getElement("elementname") -> setAttrib("disable", true);
当我提交表单时,我发现表单元素根本没有提交,只是因为它被禁用了.当我测试删除禁用选项时,我确认了这一点.
怎么了?难道我做错了什么?怎么解决这个?
我想强制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_Element_Radio?也就是说,我想添加disabled="disabled"某些输入标签.
Zend Framework是否包含此功能?或者还有另一种方法来实现这一目标吗?
我在我的zend_form中使用验证码.
$captcha_element = new Zend_Form_Element_Captcha(
'captcha',
array('label' => 'Write the chars to the field',
'captcha' => array(
'captcha' => 'Image',
'wordLen' => 6,
'timeout' => 300,
'font' => DOC_ROOT . '/data/fonts/Vera.ttf',
'imgDir' => $imagedir,
'imgUrl' => $umageurl
)
)
);
Run Code Online (Sandbox Code Playgroud)
这会产生:
<dt id="captcha-input-label">
<label for="captcha-input" class="required">Write the chars to the field</label>
</dt>
<dd id="captcha-element">
<img width="200" height="50" alt="" src="http://sitename.com/captcha/09dd951939c6cdf7fa28f2b7d322ea95.png">
<input type="hidden" name="captcha[id]" value="09dd951939c6cdf7fa28f2b7d322ea95" id="captcha-id">
<input type="text" name="captcha[input]" id="captcha-input" value="">
</dd>
Run Code Online (Sandbox Code Playgroud)
然而. - 我需要跟随(captcha元素分别包含在一些标签中):
<dt id="captcha-input-label">
<label for="captcha-input" class="required">Write the chars …Run Code Online (Sandbox Code Playgroud)