voici un problème vraiment bizarre, qui doit tenir à une broutille mais que je ne localise décidément pas...
J'ai un petit formulaire généré par symfony :
<!-- formulaire -->
<?php echo form_tag('apprenants/search', array(
'id' => 'sf_admin_edit_form',
'name' => 'sf_admin_edit_form',
'multipart' => true,
'onsubmit' => 'double_list_submit(); return true;'
));
echo input_hidden_tag('executerRecherche', 1);
?>
<fieldset id="sf_fieldset_identit__" class="">
<h2><?php echo __('Critères de recherche') ?></h2>
<div class="form-row">
Nom :
<div class="content<?php if ($sf_request->hasError('alpha_apprenants{nom_apprenant}')): ?> form-error<?php endif; ?>">
<?php if ($sf_request->hasError('alpha_apprenants{nom_apprenant}')): ?>
<?php echo form_error('alpha_apprenants{nom_apprenant}', array('class' => 'form-error-msg')) ?>
<?php endif; ?>
<?php $value = object_input_tag($alpha_apprenants, 'getNomApprenant', array (
'size' => 50,
'control_name' => 'alpha_apprenants[nom_apprenant]',
)); echo $value ? $value : ' ' ?>
</div>
</div>
</fieldset>
<div>
<ul class="sf_admin_actions">
<li>
<?php echo button_to(__('Lancer la recherche'), 'apprenants/search', array (
'class' => 'sf_admin_action_search',)) ?>
</li>
</ul>
</div>
</form>
HTML généré :
<!-- formulaire -->
<form id="sf_admin_edit_form" name="sf_admin_edit_form" onsubmit="double_list_submit(); return true;" method="post" enctype="multipart/form-data" action="/croixrouge/web/backend_dev.php/apprenants/search"><input type="hidden" name="executerRecherche" id="executerRecherche" value="1" /> <fieldset id="sf_fieldset_identit__" class="">
<h2>Critères de recherche</h2>
<div class="form-row">
Nom :
<div class="content">
<input type="text" name="alpha_apprenants[nom_apprenant]" id="alpha_apprenants_nom_apprenant" value="" size="50" /> </div>
</div>
</fieldset>
<div>
<ul class="sf_admin_actions">
<li>
<input class="sf_admin_action_search" value="Lancer la recherche" type="button" onclick="document.location.href='/croixrouge/web/backend_dev.php/apprenants/search';" /> </li>
</ul>
</div>
</form>
On a donc un champ texte "Nom", pour rechercher une personne suivant son nom, et un champ caché qui passe la variable "executerRecherche" à true, puisque l'affichage du formulaire et le traitement de la recherche sont pris en charge par la même méthode :public function executeSearch() {
$executerRecherche = $this->getRequest()->getParameter('executerRecherche');
if ($executerRecherche) {
$alpha_apprenant = $this->getRequest()->getParameter('alpha_apprenants');
$nomApprenant = $alpha_apprenant['nom_apprenant'];
[...]
}
}
Là, tout va bien, je récupère ma variable "executerRecherche", elle est à true, je rentre dans la condition, je récupère le nom, je fais la recherche, c'est top, ça marche.
Maintenant je veux chercher aussi sur le prénom. Je rajoute donc un champ "Prénom", qui est le c/c de mon champ "Nom", sauf que je rajoute "Pre" partout où il le faut :parameterHolder:
action: search
alpha_apprenants: { nom_apprenant: toto }
executerRecherche: '1'
module: apprenants
<!-- formulaire -->
<?php echo form_tag('apprenants/search', array(
'id' => 'sf_admin_edit_form',
'name' => 'sf_admin_edit_form',
'multipart' => true,
'onsubmit' => 'double_list_submit(); return true;'
));
echo input_hidden_tag('executerRecherche', 1);
?>
<fieldset id="sf_fieldset_identit__" class="">
<h2><?php echo __('Critères de recherche') ?></h2>
<div class="form-row">
Nom :
<div class="content<?php if ($sf_request->hasError('alpha_apprenants{nom_apprenant}')): ?> form-error<?php endif; ?>">
<?php if ($sf_request->hasError('alpha_apprenants{nom_apprenant}')): ?>
<?php echo form_error('alpha_apprenants{nom_apprenant}', array('class' => 'form-error-msg')) ?>
<?php endif; ?>
<?php $value = object_input_tag($alpha_apprenants, 'getNomApprenant', array (
'size' => 50,
'control_name' => 'alpha_apprenants[nom_apprenant]',
)); echo $value ? $value : ' ' ?>
</div>
</div>
<div class="form-row">
Prénom :
<div class="content<?php if ($sf_request->hasError('alpha_apprenants{prenom_apprenant}')): ?> form-error<?php endif; ?>">
<?php if ($sf_request->hasError('alpha_apprenants{prenom_apprenant}')): ?>
<?php echo form_error('alpha_apprenants{prenom_apprenant}', array('class' => 'form-error-msg')) ?>
<?php endif; ?>
<?php $value = object_input_tag($alpha_apprenants, 'getPrenomApprenant', array (
'size' => 50,
'control_name' => 'alpha_apprenants[prenom_apprenant]',
)); echo $value ? $value : ' ' ?>
</div>
</div>
</fieldset>
<div>
<ul class="sf_admin_actions">
<li>
<?php echo button_to(__('Lancer la recherche'), 'apprenants/search', array (
'class' => 'sf_admin_action_search',)) ?>
</li>
</ul>
</div>
</form>
Ce code génère ça :
<!-- formulaire -->
<form id="sf_admin_edit_form" name="sf_admin_edit_form" onsubmit="double_list_submit(); return true;" method="post" enctype="multipart/form-data" action="/croixrouge/web/backend_dev.php/apprenants/search"><input type="hidden" name="executerRecherche" id="executerRecherche" value="1" /> <fieldset id="sf_fieldset_identit__" class="">
<h2>Critères de recherche</h2>
<div class="form-row">
Nom :
<div class="content">
<input type="text" name="alpha_apprenants[nom_apprenant]" id="alpha_apprenants_nom_apprenant" value="" size="50" /> </div>
</div>
<!-- CHAMP PRENOM RAJOUTE ET QUI CASSE TOUT -->
<div class="form-row">
Prénom :
<div class="content">
<input type="text" name="alpha_apprenants[prenom_apprenant]" id="alpha_apprenants_prenom_apprenant" value="" size="50" /> </div>
</div>
<!-- FIN CHAMP PRENOM RAJOUTE ET QUI CASSE TOUT -->
</fieldset>
<div>
<ul class="sf_admin_actions">
<li>
<input class="sf_admin_action_search" value="Lancer la recherche" type="button" onclick="document.location.href='/croixrouge/web/backend_dev.php/apprenants/search';" /> </li>
</ul>
</div>
</form>
Et bien là, si je fais "Entrée" quand je suis dans le champ "Nom", ça ne soumet plus le formulaire, je dois cliquer sur le bouton. Quand je clique sur le bouton, ça ne soumet plus le formulaire, si je regarde dans la barre de debug SF je n'ai rien dans request, je comprends pas...
Si quelqu'un a une idée, ou si j'ai fait une débilité qui vous saute aux yeux répondez moi vite je n'en peux plusparameterHolder:
action: search
module: apprenants
Je mets dans la rubrique HTML car le problème semble être côté formulaire, on déplacera éventuellement quand quelqu'un aura trouvé la solution
Merci bien d'avance