标签: zend-form-element

如何在zend表单中添加"纯文本节点"?

我正在尝试以zend形式添加纯文本节点 - 目的是仅显示一些静态文本.

问题是 - 我不知道有任何这样的方法来做到这一点.

我使用了'description'但是要将它附加到表单元素.

有没有办法简单地将一些文本显示为表单的一部分?Zend将所有内容都视为表单元素,因此我无法将其打印出来.

例如:

以下将测试你的能力....

等等...

有什么想法吗?

zend-form zend-form-element

20
推荐指数
5
解决办法
1万
查看次数

如何在Zend_Form文件元素上使用ViewScripts?

我将此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

19
推荐指数
1
解决办法
2万
查看次数

Zend Framework:使用数组表示法中的Form元素

我希望能够使用数组表示法向我的表单添加一个隐藏的表单字段.我可以用这样的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-framework zend-form zend-form-element

18
推荐指数
3
解决办法
2万
查看次数

Zend Form Validator:元素A或元素B.

我的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)

如何添加一个可以查看这两个字段的验证器?

zend-framework zend-form zend-form-element

13
推荐指数
1
解决办法
5089
查看次数

通过Annotation Builder在Zend Framework 2表单中填充关系数据

目前,我有文章和标签表.我试图自动填充"标签"表单元素作为文章表单上的选择框.从数据库表中设置标签选择框的值选项的最佳方法是什么,然后让文章在"绑定"方法调用期间自动绑定标签数据?

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

13
推荐指数
1
解决办法
622
查看次数

Zend Form:Checkbox元素显示为隐藏字段?

我想在表单中添加一个简单的复选框:

$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">&nbsp;</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 &nbsp;内部标签和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() === '&nbsp;';
    var onlyChild = $(this).is(':only-child');
    if (noLabel && onlyChild) {
        return true;
    }
    return false; …
Run Code Online (Sandbox Code Playgroud)

checkbox zend-framework zend-form zend-form-element

11
推荐指数
2
解决办法
1万
查看次数

已提交已禁用的表单元素

我需要从表中显示一些预先存在的数据,但需要禁用它们以防止用户编辑它们.所以我禁用了他们

$form -> getElement("elementname") -> setAttrib("disable", true);

当我提交表单时,我发现表单元素根本没有提交,只是因为它被禁用了.当我测试删除禁用选项时,我确认了这一点.

怎么了?难道我做错了什么?怎么解决这个?

zend-framework zend-form-element

10
推荐指数
2
解决办法
9310
查看次数

Zend Framework 2 - 表单元素装饰器

我想强制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)

有任何想法吗?

php decorator zend-form zend-form-element zend-framework2

10
推荐指数
3
解决办法
2万
查看次数

如何禁用Zend_Form_Element_Radio中的各个选项

是否可以禁用单个选项Zend_Form_Element_Radio?也就是说,我想添加disabled="disabled"某些输入标签.

Zend Framework是否包含此功能?或者还有另一种方法来实现这一目标吗?

php zend-framework zend-form zend-form-element

9
推荐指数
1
解决办法
2772
查看次数

自定义zend_form Captcha输出?

我在我的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)

zend-framework zend-form zend-form-element

9
推荐指数
1
解决办法
4078
查看次数