- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基本用户表单,我为每个用例子类化,即注册、编辑等。
一些表单元素对于所有用例都是通用的,对于这些我使用表单作为元素工厂,例如$this->addElement('text', 'first_name', array(...))。这很好用。
对于仅在某些用例中需要的元素,我在基本表单类中创建它们,但不添加它们,例如$this->createElement('text', 'id', array(...))。当我进入子类本身时,就是我实际添加这些可选元素的时候。
现在,我认为在子类中,我可以简单地使用以下任一方法添加元素:
$this->addElement($this->getElement('id'));
$this->addElement($this->id);
$this->id = $this->createElement('text', 'id', array(...));
$this->addElement($this->id);
最佳答案
一切都按预期工作。没有名称冲突,因为当您使用 $this->createElement() 时,您创建的元素实际上并未保留在任何地方。使用这种方法,您必须显式地将元素保留在某个变量(如成员变量)中,然后使用 $this->addElement() 将其添加到表单元素集中。
如果您查看 Zend_Form 源代码,您会注意到:
1-调用createElement()时,元素被创建并立即返回;换句话说,该元素不在内部保存在任何地方,因此您必须自己保存它并将其添加到后面的表单中:
public function createElement($type, $name, $options = null)
{
...
$element = new $class($name, $options);
return $element;
}
$this->id = $this->createElement('text', 'id', array(...));
class ParentForm extends Zend_Form {
...
protected $_elementConfig;
...
public function init() {
...
// Add element configuration, but don't instantiate element right now
$this->_elementConfig = array();
// Element 1, a text input
$this->elementConfig['myTextInput'] = array(
'Text',
array(
'label' => 'Theme',
'description' => 'Main application theme',
'maxLength' => 128,
'validators' => array(
array('StringLength', false, array('max' => 128))
),
'filters' => array(
array('HtmlEntities')
)
)
);
// Element 2, a submit button
$this->elementConfig['mySubmitButton'] = array(
'Submit',
array(
'label' => 'Save'
)
);
// Element 3, something else
...
}
...
}
class ChildForm extends ParentForm {
public function init() {
parent::__construct(); // Parent init() is called by the parent constructor
...
// Will use the submit button
$this->addElement(
$this->_elementConfig['mySubmitButton'][0], // Type of element
'mySubmitButton', // Name of element
$this->_elementConfig['mySubmitButton'][1] // Config of element
);
}
}
关于zend-framework - 如何使用 Zend_Form->createElement(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577110/
我正在处理Zend_Form现在,我很难弄清楚如何: 使用表单按钮的自定义图像, 在特定位置插入文本和链接(就我而言,我想在提交按钮之前添加“忘记密码?”链接)。 我已通读手册,但没有看到任何相关内容
我想创建一个表单,允许用户输入任意数量的值,每个值都使用数组表示法在单独的文本字段中。预期的 HTML 输出示例是: 但是,我似乎无法找到一种方法,使用没有索引的数组表示法在单
我正在研究一个系统,我有一个表格,我需要在其中进行交叉验证。交叉验证我的意思是:如果有人来自美国,系统必须能够检查已选择的州是否是有效的美国州而不是加拿大的省。理想情况下,错误输出消息应该在 faut
首先,我尝试在 stackoverflow 上搜索类似的主题。我知道一些类似的帖子被关闭,因为已经有答案的帖子,我真的觉得它没有帮助(这里: zend form validation ,也许我不够聪明
我已经扩展了 Zend_Form 来创建自定义表单,我将在网站的某些页面上重用该表单。对于这个表单,我还创建了一些基于 jquery 的 JavaScript 验证。 我想要做的是为子类 Zend_F
我有一个表格。 已检查:$isValid = $form->isValid($this->getRequest()->getPost()) 问题是错误是空的。 $form->getErrors()返回
class Form_Accounts_Add extends Zend_Form { public function init($options=array()) { $fi
各位,我在网页中呈现/显示表单时遇到了一些问题。好吧,它在我的本地服务器上运行良好,但一旦我在远程服务器上使用相同的代码,网页显示正常,但表单丢失。 本地主机: 操作系统:Win 7 PHP: 5.3
下面是在 Zend_Form 中创建带有 Yes/No 选项的单选按钮元素的示例代码。关于如何将所需答案设置为"is"的任何想法,因此如果选择“否”,它将无法通过验证?下面的代码将接受 Yes 或 N
我有一个带有下拉字段的 Zend_Form。当用户在 url 中设置一个值时,应在此下拉列表中选择该值作为默认值。 所以我现在做的是: $parlang = $this->getRequest()->
在 Zend Frameworks 教程中,我可以看到像这样的表单处理代码 if ($request->isPost()) { $formData = $request->ge
我已经阅读了很多关于此的帖子,但我无法解决我的问题。当我尝试验证我的 zend 表单验证码时,即使文本正确,它也总是失败。这是我的代码: //我在哪里调用我的表单 public function c
我有一个带有 Zend_Form 的 Zend 应用程序,它应该使用 HTML5 placeholder 属性而不是标签,like done here . class Application_Form
我在使用 Zend_Form 删除默认装饰器集时遇到了麻烦。 我正在尝试扩展 Zend_Form 以实现不同的装饰器风格。 class CRM_Form extends Zend_Form { pu
使用 Zend_Form,我将如何创建这样的表单元素: // etc... 最佳答案 您可以使用子表单: $form = new Zend_Form(); $subForm = new Zend_
动态添加的最佳方式是什么新品 dhtml 内容到通过 Zend_Form 生成的表单。例如,假设表单是这样创建的: class formUser extends Zend_Form { pub
我的 Zend_Forms 之一有一个奇怪的问题:isValid()正确声明我的表单无效,但我没有收到任何错误消息。怎么会这样? 这是代码,这里没什么特别的。 $data是一个帖子数据数组。没有发送文
我有标签装饰器的问题。当我生成一个表单时,我有这样的东西: e-mail 但是我需要 : e-mail 我的代码: $oText = new Zend_Form_Element_Text('us
我正在将一个 Zend_Form 放在一起,它有许多子表单。事实上,它有可能有这么多子表单,我希望它们出现在多个页面上。是否可以使用 Zend_Paginator 创建一些动态页数的多页表单? 这是一
我正在尝试学习 Zend Framework!我对它很感兴趣,但我找不到一个教程说明它应该存储在 Zend_Form 类的位置!也许这是很简单的事情,但我还无法理解......我看过有关此的教程:
我是一名优秀的程序员,十分优秀!