这是我的代码。我有一个树枝形式
我想使用像this这样的symfony WebTestCase抓取工具来访问它,但它不起作用。 我想使用“下载”按钮进行测试。
有人有解决方案吗?
<div class="modal-body">
{{ form(trackImageForm) }}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" onclick="$(this).prop('disabled', true);$('form[name={{ trackImageForm.vars.id }}]').submit()">Download</button>
</div>
我试过这个
$form = $crawler->selectButton('Download')->form(array(...));
编辑:
好的,我可以访问我的表单
{{ form_start(trackImageForm, {'attr': {'id': 'add_image_form'}}) }}
{{ form(trackImageForm) }}
我给了我的表格一个id,可以
$form = $crawler->filter('form#add_image_form')->form();
但我可以提交表格吗?
答案 0 :(得分:3)
正如您所提到的文档所说:
selectButton()方法可以选择按钮标签并提交输入标签。 它使用按钮的几个部分来查找它们:
- 值属性值;
- 图片的id或alt属性值;
- 按钮标记的 ID或名称属性值。
您的代码中没有符合这些条件的按钮。
您应该为其提供name
或id
属性,并在测试中使用它。
@关于你的编辑:
如果不是<form>
,则无法提交。这很明显。不要使用JavaScript进行提交,只需将这些按钮放在表单中即可。使用JS在你的案例中提交表单毫无意义。
如果您不想将提交的内容放入您的表格(这是正确的),您可以使用以下内容:
{{ form_start(trackImageForm) }}
<div class="modal-body">
{{ form_rest(trackImageForm) }}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" onclick="$(this).prop('disabled', true);$('form[name={{ trackImageForm.vars.id }}]').submit()">Download</button>
</div>
{{ form_end(trackImageForm) }}
form_start
打印<form>
开标签form_rest
打印所有尚未打印的字段(在您的情况下都是如此)form_end
打印关闭</form>
代码