标签: zend-form

Zend Framework:如何删除Zend Form Hidden Element上的装饰器?

我正在尝试删除隐藏表单元素上的默认装饰器.默认情况下,隐藏元素显示如下:

<dt>Hidden Element Label (if I had set one)</dt>
<dd><input type="hidden" name="foobar" value="1" id="foobar"></dd>
Run Code Online (Sandbox Code Playgroud)

我不希望我的隐藏元素占用我页面上的空间.我想删除所有默认装饰器,所以我剩下的就是输入标签.

<input type="hidden" name="foobar" value="1" id="foobar">
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

zend-framework zend-form zend-decorators

49
推荐指数
6
解决办法
5万
查看次数

Zend Form:我如何让它符合我的意愿?

我已多次阅读本手册,我已经仔细阅读了Google提供的有关该主题的帖子,我甚至买了几本与ZF有关的书籍.现在,为什么我仍然困惑?

我可以使用Zend_Form创建一个验证和运行正常的表单.我无法做到的是一个看起来完全像我希望它看到我想要它的错误消息的表单.我想要自定义按钮,我想要时髦的布局,我想在表单中间插入文本等.

有没有人有一种简单的方法来实现这些事情?让我觉得这个框架的东西能节省我的时间而不是花钱吗?我可以放弃Zend Form ...制作我自己的表单,让它的动作点击页面来验证和处理发布的数据,我可以尽可能快地打字,但我真的想"得到"这个并且能够使用它,因为它显然是有意的.

有什么建议?任何简单的"如何"的自定义按钮,时髦的布局和基本(或者相当高级,因为有大量的基本教程可以跳过更难的问题)"使用zend形式完成任务"?

php zend-framework zend-form

42
推荐指数
4
解决办法
2万
查看次数

Zend_Form - >很好地改变setRequired()验证消息

假设我创建了一个这样的文本元素:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->setRequired(true);
Run Code Online (Sandbox Code Playgroud)

什么是更改默认错误消息的最佳方法:

值为空,但需要非空值

自定义消息?我读到了替换消息的地方,只需使用addValidator(...,而不是setRequired),如下所示:

$firstName = new Zend_Form_Element_Text('firstName');
$firstName->addValidator('NotEmpty', false, array('messages'=>'Cannot be empty'));
Run Code Online (Sandbox Code Playgroud)

但在我的测试中,这不起作用 - 它根本不验证 - 它将传递一个空文本字段.同时使用两者(addValidator('NotEmp .. + setRequired(true))也不起作用 - 它会双重验证,给出两条错误消息.

有任何想法吗?

谢谢!

php zend-framework zend-form

26
推荐指数
5
解决办法
2万
查看次数

如何在Zend表单中禁用表单元素?

我想显示一个Zend表单,其中一个元素显示为禁用.我正在设置值,以便用户可以看到它,但我想禁用它,以便用户无法编辑它.这可能还涉及某种css/javascript,以确保它看起来像用户不可编辑.这是我的要素:

    $this->addElement('text', 'username', array(
        'label'      => 'Username:',
        'required'   => true,
        'filters'    => array('StringTrim'),
        'validators' => array(
            array('StringLength', false, array(2, 50))
        )
    ));
Run Code Online (Sandbox Code Playgroud)

html css zend-framework zend-form

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

Zend Form:如何设置文本输入或textarea元素的长度?

默认情况下,Zend Form Text元素没有指定宽度.Textarea元素的默认值为rows="24"cols="80".但是当我设定不同的价值时......

$body = new Zend_Form_Element_Textarea('body');
$body->setLabel('Body:')
    ->setRequired(true)
    ->setAttrib('COLS', '40')
    ->setAttrib('ROWS', '4');
$this->addElement($body);
Run Code Online (Sandbox Code Playgroud)

...只添加属性,而不是更改:

<textarea name="body" id="body" COLS="40" ROWS="4" rows="24" cols="80">
Run Code Online (Sandbox Code Playgroud)

指定textarea元素的宽度和高度以及文本元素的列宽的正确方法是什么?

解:

显然,您不能用大写字母指定html属性,否则它将添加重复的属性.

要更改文本区域元素的高度和宽度,请执行以下操作:

$textarea = new Zend_Form_Element_Textarea('body');
$textarea
    ->setAttrib('cols', '40')
    ->setAttrib('rows', '4');
Run Code Online (Sandbox Code Playgroud)

要更改文本元素的宽度:

$text = new Zend_Form_Element_Text('subject');
$text->setAttrib('size', '40');
Run Code Online (Sandbox Code Playgroud)

zend-form

23
推荐指数
2
解决办法
4万
查看次数

Zend Framework表单,装饰器和验证:我应该回到纯HTML吗?

我目前正在开发一个包含大量表单的大型应用程序.

到目前为止,我一直在手工编写我的表单并编写自己的验证逻辑,但我已经决定是时候开始使用Zend_Form并且它是内置的验证例程.

但是,我一直在绊倒越来越多关于(缺乏)灵活性的问题Zend_Form_Decorator.简单的任务,如为单个输入元素添加额外的按钮,变得非常困难.

我现在已经达到了一个点,我正在认真考虑完全放弃Zend_Form_Element+ Zend_Form_Decorator方法,但我不想失去优秀的验证选项.

基本上,我想要两全其美:

  • 以最终用户看待它们的方式编写表单:用纯HTML格式
  • 在不破坏太多ZF标准行为的情况下,轻松地向表单字段添加服务器端验证

我正在考虑的一种可能的解决方案是在服务器端和视图中一起编写表单.这将允许我轻松验证我自己的表单,但(在我看来相当大)的缺点是每个表单应该定义两次,这只是感觉完全错误.

有没有指导方针呢?你们有没有经历过同样的事情,如果有的话,你们是如何解决这些问题的?

我非常想听听你的观点.

php zend-framework decorator zend-form

20
推荐指数
2
解决办法
7528
查看次数

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

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

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

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

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

例如:

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

等等...

有什么想法吗?

zend-form zend-form-element

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

Zend Framework - 在选择框下拉列表中设置"已选择"值

我将一个select元素添加到Zend_Form实例,如下所示:

  $user = $form->createElement('select','user')->setLabel('User: ')->setRequired(true);
  foreach($users as $u)
        {
            if($selected == $u->id)
            {
                $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname);
                //*** some way of setting a selected option? selected="selected"

            }
            else
                $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname);
        }
Run Code Online (Sandbox Code Playgroud)

我一直在搜索文档,但找不到一种简单的方法来将select元素的选项预先设置为"selected".

php html-select zend-framework zend-form

19
推荐指数
3
解决办法
7万
查看次数

如何在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万
查看次数