使用 Zend Form 创建动态输入名称
Create dynamic input name with Zend Form
我想让我的 Zend_Form_Element_Text 动态化,即它会接受不同的输入名称。
我有这个:
$email = new Zend_Form_Element_Text('email');
它创建一个输入 'email' 作为名称:
<input name="email" id="email" size="20" maxlength="100" placeholder="Email" class="input" type="text">
但有时我会收到一些外部 POST 请求,它们的输入名称字段不同,如下所示:
<input name="login_Email" id="email" size="20" maxlength="100" placeholder="Email" class="input" type="text">
你能指导我怎么做吗?
在你的控制器中,我猜你有这样的东西来获取 POST 变量:
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
....
所以你可以测试每个POST变量,如果它匹配'email'而不等于'email',你可以创建一个新的电子邮件变量POST
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
foreach($formData as $name => $value){
if ($name != 'email' && preg_match("/email/i", $name))
$formData['email'] = $value;
}
if ($form->isValid($formData)) {
...
我想让我的 Zend_Form_Element_Text 动态化,即它会接受不同的输入名称。
我有这个:
$email = new Zend_Form_Element_Text('email');
它创建一个输入 'email' 作为名称:
<input name="email" id="email" size="20" maxlength="100" placeholder="Email" class="input" type="text">
但有时我会收到一些外部 POST 请求,它们的输入名称字段不同,如下所示:
<input name="login_Email" id="email" size="20" maxlength="100" placeholder="Email" class="input" type="text">
你能指导我怎么做吗?
在你的控制器中,我猜你有这样的东西来获取 POST 变量:
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
....
所以你可以测试每个POST变量,如果它匹配'email'而不等于'email',你可以创建一个新的电子邮件变量POST
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
foreach($formData as $name => $value){
if ($name != 'email' && preg_match("/email/i", $name))
$formData['email'] = $value;
}
if ($form->isValid($formData)) {
...