0

当我应用此代码时:

class ContactoForm extends BaseContactoForm
{
    public function configure()
    {
        $this->addCSRFProtection(rand(1, 1000));
    }
}

然后我去 action.php 一个模块:

$this->form = new ContactoForm();

该字段不会更改_csrf_token:

刷新1:

<input type="hidden" id="contacto__csrf_token" value="d6e64fcc34a99c1c90dd95eef945e564" name="contacto[_csrf_token]">

刷新2:

<input type="hidden" id="contacto__csrf_token" value="d6e64fcc34a99c1c90dd95eef945e564" name="contacto[_csrf_token]">

刷新 N:

<input type="hidden" id="contacto__csrf_token" value="d6e64fcc34a99c1c90dd95eef945e564" name="contacto[_csrf_token]">

但如果我从行动中应用它:

$this->form = new ContactoForm();
$this->form->addCSRFProtection(rand(1, 1000));

在这里如果你改变

Refresh 1:
<input type="hidden" id="contacto__csrf_token" value="22815f44f18e41947d7568c0771abda4" name="contacto[_csrf_token]">

Refresh 2:
<input type="hidden" id="contacto__csrf_token" value="38bfae0a71a79d16b39ce943658f2700" name="contacto[_csrf_token]">

Refresh 3:
<input type="hidden" id="contacto__csrf_token" value="882c989dc95e40406b28200631cffc3d" name="contacto[_csrf_token]">

在 symfony 1.2 中,它起作用了。现在在 symfony 1.4 中不起作用,请帮助我,谢谢。

4

1 回答 1

-1

我不能说我知道 symfony,但是从您的示例中可以看出,当您创建 ContactoForm 的新实例时,不会调用 configure()。尝试在 ContactoForm 的构造函数中显式调用它。

class ContactoForm extends BaseContactoForm {
    public function __construct() {
        parent::__construct();  // if there is a parent constructor
        $this->configure();
    }
    public function configure() {
        $this->addCSRFProtection(rand(1, 1000));
    }
}
于 2012-05-18T18:07:16.730 回答