Symfony爬虫无法访问树枝形式

时间:2017-05-10 07:52:18

标签: php html symfony twig

这是我的代码。我有一个树枝形式

我想使用像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();

但我可以提交表格吗?

1 个答案:

答案 0 :(得分:3)

正如您所提到的文档所说:

  

selectButton()方法可以选择按钮标签并提交输入标签。 它使用按钮的几个部分来查找它们:

     
      
  • 值属性值;
  •   
  • 图片的id或alt属性值;
  •   
  • 按钮标记的 ID或名称属性值
  •   

您的代码中没有符合这些条件的按钮。

您应该为其提供nameid属性,并在测试中使用它。

@关于你的编辑:

如果不是<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>代码