Reputation: 1089
here is my code. I have a twig form
I want to access it using symfony WebTestCase crawler like this, but it doesn't work. I want to use the Download button for testing purposes.
Does someone have a solution ?
<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>
i tried this
$form = $crawler->selectButton('Download')->form(array(...));
EDIT :
OK i can access to my form
{{ form_start(trackImageForm, {'attr': {'id': 'add_image_form'}}) }}
{{ form(trackImageForm) }}
i gave an id to my form and can n
$form = $crawler->filter('form#add_image_form')->form();
but will I be able to submit the form ?
Upvotes: 2
Views: 293
Reputation: 15696
As the documentation that you've referred to says:
The selectButton() method can select button tags and submit input tags. It uses several parts of the buttons to find them:
- The value attribute value;
- The id or alt attribute value for images;
- The id or name attribute value for button tags.
There's no button in your code matching these conditions.
You should give it a name
or id
attribute and use it in you test.
@About your edit:
If it's not a <form>
, you cannot submit it. That's pretty obvious. Instead of making the submit with JavaScript, just put these buttons inside form as they should be. Using JS to submit the form in you case makes no sense.
If you don't want to put the submits in you form class (which is correct), you can do that with something like:
{{ 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
prints <form>
opening tagform_rest
prints all fields that have not been printed yet (which is all in your case)form_end
prints closing </form>
tagUpvotes: 3