В Symfony 3, в вашем WebTestCase
, вам нужно получить токен CSRF:
$csrfToken = $client->getContainer()->get('security.csrf.token_manager')->getToken($csrfTokenId);
Чтобы получить $csrfTokenId
, лучшим способом было бы принудительно ввести его в параметрах вашего FormType
():
class TaskType extends AbstractType
{
// ...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'csrf_token_id' => 'task_item',
));
}
// ...
}
Так что в этом случае: $csrfTokenId = "task_item";
. Или вы можете попробовать использовать значение по умолчанию, которое будет именем вашей формы.
Затем используйте его как параметр записи:
$client->request(
'POST',
'/url',
[
'formName' => [
'field' => 'value',
'field2' => 'value2',
'_token' => $csrfToken
]
]
);