Archief - Geen data in POST (Silex)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

cosmo2

Legacy Member
Hello,

Ik ben met een project bezig in Silex en heb hierbij een form gemaakt. De form wordt via POST doorgestuurd, maar om één of andere reden wordt deze form not valid in mijn code hoewel alles is ingevuld.
Ik heb al gezocht op de CRSF token error, maar alles wat ik gevonden heb heeft mij geen meter vooruit geholpen. Dus ik vermoed dat het iets anders is..

Mijn form:
Code:
form action="{{ path('tools.find') }}" method="post"  {{ form_enctype(form) }} novalidate="novalidate">
				<fieldset>
					<legend>Filter Collection</legend>

					<div class="form-group">
						<label for="filterform_name" class="required">Name</label></br>
						{{ form_widget(form.Name) }}
					</div>

					<div class="form-group">
						<label for="filterform_application" class="required">Application</label></br>
						{{ form_widget(form.Application) }}
					</div>

					<div class="form-group">
						<label for="filterform_location" class="required">Location</label></br>
						{{ form_widget(form.Location) }}
					</div>

					{{ form_widget(form._token) }}
					
					<input type="submit" class="btn-right" value="Filter" />
				</fieldset>
			</form>


Mijn silex code:
Code:
		//Set method to POST
		$app['request']->setMethod('POST');

		//Set all filters
		$filters = array('N/A', 'Wood', 'Brick', 'Steel');

		//Grab all tools
		$allTools = $app['db.tools']->findAll();

		//var_dump($allTools);

		//Form 'filter' data
		$data = array(
	        'Name' => NULL,
	        'Application' => '',
	        'Location' => NULL
	    	);

		//Building...
		$form = $app['form.factory']->createBuilder('form', $data)
	        ->add('Name', 'text')
	        ->add('Application', 'choice', array(
	        	'choices' => array($filters)
	        	))
	        ->add('Location', 'text')
	        ->getForm();

	    //Validate form
	    if ('POST' == $app['request']->getMethod()) {
	        $form->handleRequest($app['request']);
	        
	        var_dump($form);
	        var_dump($form->getData());
	        

	        if ($form->isValid()) {
	            $data = $form->getData();

	            var_dump($allAlbums);
	            // redirect somewhere
	            return $app->redirect($app['url_generator']->generate('tools.find') . '?found');
	        }
	    }




		return $app['twig']->render('index/find.twig', array(
			'pageTitle' => 'ToolFinder Search',
			'h1span' => 'Search for your tools.',
			'tools' => $allTools,
			'onMain' => true,
			'form' => $form->createView()
		));

k' Ben nu al 2hr aant zoeken, maar misschien ben ik zodanig zot gezocht dat ik erover kijk.

CrushTheButton

Legacy Member
Ik heb nog nooit Silex gebruikt, dus ik kan je niet verder helpen.

dJeez

Legacy Member
cosmo2 zei:
Code:
$app['request']->setMethod('POST');
Is simpelweg al fout, je moet nooit ofte nimmer zelf de request method gaan zetten in je code als je form input wil gaan verwerken en misschien moet je gewoon de form_errors eens bekijken.

Verder kan een degelijke IDE gebruiken en wat debuggen ook wel al helpen, vooral omdat je de helft van de code achterwege laat (want het kan net zogoed aan ontbrekende initialisatie liggen, dat is onmogelijk om te bepalen op basis van het stuk dat je hebt gepost, sowieso kan het nooit werken als je enkel dat als code gebruikt).

BTW Je form tag is ook niet deftig geopend, dus misschien ligt het daar wel aan (ofwel moet je leren copy/pasten, dat kan ook).

cosmo2

Legacy Member
dJeez zei:
Code:
$app['request']->setMethod('POST');
Is simpelweg al fout, je moet nooit ofte nimmer zelf de request method gaan zetten in je code als je form input wil gaan verwerken en misschien moet je gewoon de form_errors eens bekijken.

Verder kan een degelijke IDE gebruiken en wat debuggen ook wel al helpen, vooral omdat je de helft van de code achterwege laat (want het kan net zogoed aan ontbrekende initialisatie liggen, dat is onmogelijk om te bepalen op basis van het stuk dat je hebt gepost, sowieso kan het nooit werken als je enkel dat als code gebruikt).

BTW Je form tag is ook niet deftig geopend, dus misschien ligt het daar wel aan (ofwel moet je leren copy/pasten, dat kan ook).

Ja die form tag is inderdaad van niet goed te copy pasten.
Ondertussen het probleem gevonden.

Het is niet
$form->handleRequest($app['request']);

maar
$form->bind($app['request']);

dJeez

Legacy Member
Dan gebruik je wellicht een oude versie van de Symfony form component... Check dus best je composer.json file op de versie van Symfony componenten die je gebruikt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan