小编grz*_*hoo的帖子

生成新的CSRF令牌而不重新加载整个表单

如果用户在使用我的Symfony2应用程序时在后台登出(由于会话过期或其他原因),我已经在屏幕上显示了一个JS层,允许用户立即重新登录并继续使用该网站.

问题是,如果用户正在填写表单并注销,在使用JS层重新登录后,他仍然使用他已设法输入的值查看相同的表单,但他的会话发生了变化.因此,表单中的CSRF令牌无效.

有没有办法根据当前会话和特定表单生成新的CSRF令牌,通过AJAX抓取并在表单中替换?或者也许有其他解决方案?

我不想禁用CSRF保护.

symfony

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

在Twig中自定义小部件的ID属性

在渲染窗口小部件时,是否可以在Twig中自定义HTML'id'属性 {{ form_widget(form.NAME_OF_THE_FIELD) }}

传球{'attr': {'id': 'SOMETHING'}}不起作用......

感谢帮助!

symfony-forms symfony

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

仅在Symfony2中验证单个表单字段

我正在寻找一种方法来根据特定实体的注释中指定的约束来验证单个字段(对象属性).

目标是在表单字段的"onBlur"事件之后发送一个AJAX请求,要求服务器仅验证此单个字段,并且 - 根据响应 - 在此字段旁边添加一个小的"OK"图像或错误信息.

我不想验证整个实体.

我想知道这个问题的最佳方法是什么?谢谢你的任何提示.

validation symfony

11
推荐指数
2
解决办法
5687
查看次数

Symfony 2.6 - 按名称呈现个人选择字段(收音机,复选框)

如何在Symfony 2.6中的Twig中渲染单个字段(单个无线电/复选框输入字段)?

假设我有一个简单的形式:

class TransportType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
            $builder->add('transport', 'choice', array(
                'choices' => array(
                    'road' => 'Car/bus',
                    'train' => 'Train',
                ),
                'expanded' => true,
                'multiple' => false
            ));
    }
Run Code Online (Sandbox Code Playgroud)

在以前的Symfony2版本中,我可以使用:

{{ form_widget(form.transport.road) }}
{{ form_widget(form.transport.train) }}
Run Code Online (Sandbox Code Playgroud)

渲染单个单选按钮,但它似乎不再起作用.我知道我可以用:

{{ form_widget(form.transport[0]) }}
{{ form_widget(form.transport[1]) }}
Run Code Online (Sandbox Code Playgroud)

但它的灵活性较差.当然,我可以迭代收集并检查名称,但这似乎是不必要的麻烦.是不是有更简单的方法?

我试过offsetGet(应该这样return a child by name),但它也适用于数组索引.

php symfony-forms symfony twig

9
推荐指数
2
解决办法
9687
查看次数

标签 统计

symfony ×4

symfony-forms ×2

php ×1

twig ×1

validation ×1