【发布时间】:2015-02-04 17:28:29
【问题描述】:
我在我的 Form 类上定义一个字段,如下所示:
->add('alternative_email', 'email', array(
'trim' => true,
'required' => false
))
并且也尝试过这种方式:
->add('alternative_email', 'text', array(
'trim' => true,
'required' => false
))
然后在我渲染该字段的模板上,我只是这样做:
{{ form_widget(form.user.alternative_email, {'attr':{'class':'form-control'}})}}
每当我呈现该表单时,我都会将其作为输出:
<input type="email" id="natural_user_alternative_email" name="natural[user][alternative_email]" required="required" class="form-control" data-bv-field="natural[user][alternative_email]">
为什么要添加 required 属性?
作为旁注,我通过在该字段上设置此验证规则来使用BootstrapValidator:
'natural[user][alternative_email]': {
validators: {
emailAddress: {},
different: {
field: 'natural[user][email]',
}
}
}
这意味着:
- 有效的电子邮件地址
- 当前电子邮件 (alternative_email) 与
natural[user][email]上的电子邮件不同
此外,我通过手动删除app/cache 的所有内容(rm -rf app/ cache)多次清除缓存我通过运行php -r "apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode');" 清除了APC 缓存,最后重新启动了这两个服务:php-fpm 和nginx .
我还在 Chrome 的“隐身窗口”中工作,因此内容不会被缓存。谁能帮我解决这个奇怪的问题?
运行其他测试:这怎么可能?
试图找出问题出在哪里,我进行了一些其他测试,但令我惊讶的是,我在这一点上感到困惑,因为这是不可能的。请参阅我已将表单类上的字段定义更改为:
->add('email_alternative', 'text', array(
'trim' => true,
'required' => false
))
并且没有触及我代码的任何其他部分,因此模板保持不变并要求渲染alternative_email 字段。正如预期的那样,应该会出现错误吗?不,没有错误,页面仍然呈现并且字段不断调用natural[user][alternative_email],这怎么可能?
我已经停止了 Nginx 并启动了 Apache 来测试是否已经存在某种奇怪的缓存,但和以前一样:没有错误,字段保持调用 natural[user][alternative_email],有什么线索吗?
注意:我使用的是 Symfony 2.6.1
【问题讨论】:
-
correo_alternativo 或 Alternative_email?
-
@Cerad
alternative_email只是在从西班牙语翻译成英语时打错字了,抱歉 -
检查您的控制器是否调用了正确的表单类型。如果删除 BootstrapValidator,
required属性是否仍然存在? -
是的,已经尝试过了,最后一个奇怪的事情是我删除了完整的 use 语句并且事情继续进行,所以这里发生了一些非常奇怪的事情,我无法找到任何东西线索?