gpt4 book ai didi

javascript - Symfony - PHPunit 使用 jquery 生成值提交表单(用于选择)

转载 作者:行者123 更新时间:2023-11-28 08:07:18 25 4
gpt4 key购买 nike

我对 symfony2 的 PHPUnit 功能测试有疑问。

我有一些带有选择的表单,它们的值不一定在表单类型中设置,而是由 Jquery 生成。

例如:表单类型包含:

class MyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('zipCode', 'text')
->add('city', 'choice', array('choices' => array('' => ''), 'mapped' => false))
->add('way', 'choice', array('choices' => array('' => ''), 'mapped' => false));
}
}

在我的 View 中,用户设置了邮政编码,并通过 AJAX 请求设置了城市选项,接下来设置了方式选项。

通常,我会获取/提交这样的表单:

$form = $crawler->selectButton($submit)->form();
$form['nameOfZipCodeField'] = 'VALUE';
$form['nameOfCityField'] = 'VALUE';
$form['nameOfWayField'] = 'VALUE';
$crawler = $client->submit($form);

但是,Way 和 City 的值未在 formType 中设置,因此 phpunit 会说:VALUE 不是可能的值(可能的值:)

这是合乎逻辑的...但我不知道该怎么做。我尝试直接设置输入值(通过 Crawler 的 filter() 方法),但我无法模拟单击按钮(不是链接,而是按钮)。

如果你有答案,我很乐意:)谢谢

最佳答案

这样做:

$form = $crawler->selectButton($submit)->form();
$form['nameOfZipCodeField'] = 'VALUE';
$form['nameOfCityField']->disableValidation();
$form['nameOfCityField'] = 'VALUE';
$form['nameOfWayField']->disableValidation();
$form['nameOfWayField'] = 'VALUE';
$crawler = $client->submit($form);

By default, choice fields (select, radio) have internal validation activated to prevent you from setting invalid values. If you want to be able to set invalid values, you can use the disableValidation() method on either the whole form or specific field(s).

阅读文档:http://symfony.com/doc/current/components/dom_crawler.html#selecting-invalid-choice-values

关于javascript - Symfony - PHPunit 使用 jquery 生成值提交表单(用于选择),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24673005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com