ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 有没有办法为Zend_Form元素名称添加前缀?

2019-09-02 09:40:00  阅读:209  来源: 互联网

标签:zend-form-element php zend-framework zend-form


我有一个页面上有多个表单.其中一些表单共享一个具有相同名称的元素,如CustomerID.这意味着元素ID CustomerID将与其他表单中的相同ID冲突.我想找到一种简洁的方法,在字段名称前加上表单的名称.例如PaymentProfile_CustomerID.建议?

到目前为止,我能想到的最好的是:

class MyForm extends Zend_Form
{
    public function init()
    {
        $this->setName("PaymentProfile");
        ...
        $this->_prefixElementNames();
    }

    private function _prefixElementNames()
    {
        $elements = $this->getElements();
        $formName = $this->getName();

        foreach($elements as $e) {
            $e->setAttrib('id', $formName . '_' . $e->getName());
        }
    }
}

UPDATE @ garvey的答案下面的答案很简单,修改很简单.

public function addElement($element, $name = null, $options = null)
{
    $e = parent::addElement($element, $name, $options);
    if($this->getName())
        // I use setAttrib instead of setName because I only want the ID to be changed.
        // Didn't want the form data to be prefixed, just the unique HTML identifier.
        $element->setAttrib('id', $this->getName() . '_' .  $element->getName());
    return $e;
}

解决方法:

我认为使用elementsBelongTo更容易:

public function init()
{
    $this->setOptions(array(
        'elementsBelongTo' => 'form_name' 
    ));
}

编辑:扩展以备将来使用

使用elementsBelongTo包装数组中的所有表单元素,这样你就可以得到

Zend_Debug::dump($this->_getAllParams())

输出:

["form_name"] => array(
    ["element1"] => "value1"
    ["element2"] => "value2"
)

标签:zend-form-element,php,zend-framework,zend-form
来源: https://codeday.me/bug/20190902/1790246.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有