Базовый конструктор sfForm определяет, включено ли и что будет CSRFSecret.
class sfForm implements ArrayAccess, Iterator, Countable
{
public function __construct($defaults = array(), $options = array(), $CSRFSecret = null)
{
$this->setDefaults($defaults);
$this->options = $options;
$this->localCSRFSecret = $CSRFSecret;
$this->validatorSchema = new sfValidatorSchema();
$this->widgetSchema = new sfWidgetFormSchema();
$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
$this->setup();
$this->configure();
$this->addCSRFProtection($this->localCSRFSecret);
$this->resetFormFields();
}
}
В тех случаях, когда отключение локальной защиты CSRF с помощью disableLocalCSRFProtection () не работает, вы можете попытаться создать экземпляр формы с "ложным" CSRFSecret ".
Пример:
$myForm = new myForm(array(), array(), false);
Редактировать: (Вышеуказанное предложение не сработало для автора)
Не могли бы вы попробовать, просто комментируя конфигурацию "csrf_secret" в файле settings.yml вашего приложения. Прокомментировав эту строку, не забудьте очистить кэш Symfony. Чтобы убедиться, что защита CSRF отключена глобально, вы можете проверить значение конфигурации "sf_csrf_secret" следующим образом:
var_dump(sfConfig::get('sf_csrf_secret'))
Это должно дать вам логическое значение false, которое подразумевает, что на самом деле вся защита CSRF отключена.