CakePHP 2.3.1 désactiver la validation d'un formulaire dans un certain nombre de vues
Le livre présente pour la version 2.3 de la possibilité de désactiver l'forcé valiadation pour les formulaires. Ou au moins je l'ai compris comme ça:
Citation: à partir de http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html
" Nouveau dans la version 2.3.
Depuis 2.3 le HTML5 attribut requis seront également ajoutés à l'entrée
basé sur les règles de validation. Vous pouvez définir explicitement clé requise dans
tableau d'options pour le remplacer par un champ. Pour sauter le navigateur de validation
déclenchement pour l'ensemble du formulaire, vous pouvez définir l'option 'formnovalidate' =>
vrai pour la touche d'entrée vous générer l'aide de FormHelper::submit() ou
set "novalidate' => true dans les options pour FormHelper::create()."
Dans mon cas, j'ai une recherche à partir de ce modèle et bien sûr, l'utilisateur n'a pas besoin de remplir tous les champs obligatoires, comme pour l'ajout d'un jeu de données. Je tiens donc à désactiver la validation de mon formulaire de recherche.
J'ai essayé tous les trois variantes, sans voir les résultats: Toujours les champs obligatoires pour créer sont obligatoires dans mon formulaire de recherche.
Ces tentatives que j'ai faites:
premier essai:
echo $this->Form->create('Partner', array('action' => 'search', 'novalidate' => true));
deuxième essai:
echo $this->Form->input('name',
array('required' => false, 'value' => $this->Session->read('Searchparameter.name'))
);
troisième essai:
$this->Form->submit('Submit', array('formnovalidate' => true));
echo $this->Form->end();
variation:
echo $this->Form->end(__('Submit'), array('formnovalidate' => true));
Ce que ne je comprends mal? btw: je n'ai désactiver la mise en cache, ce qui ne devrait pas être le problème.
Bien sûr, je pourrais toujours utiliser l'ancienne solution de contournement pour cette validation, mais quand 2.3 est de proposer cette option, je serais heureux de l'utiliser.
Calamity Jane
Comment cette erreur de validation se produire? dans la vue comme la validation html5? ou dans le backend de code via les règles de validation du modèle?
Si vous faites référence à des champs sur le formulaire de recherche ayant le apparence de champs (et de ne pas être en fait, requis pour effectuer la recherche), ce qui pourrait être à venir à partir de votre fichier CSS; CakePHP encapsule les champs dans un
div
avec le required
classe par défaut (lorsque les champs sont obligatoires, bien sûr). Vous pouvez changer ce comportement en définissant la div
option pour false
lors de l'appel de la $this->Form->input
méthodes. Je ne peux pas imaginer une situation où les champs de en fait, être nécessaire, à moins que vous appelez le modèle de save
méthode sur la "recherche" de l'action (très peu probable).Je ne fais rien dans le contrôleur sur la validation. Je viens de le tableau dans le modèle
Ce qui se passe, c'est quand j'essaie d'envoyer le formulaire sans entrées dans les champs nécessaires-je obtenir les champs marqués en rouge et rectangulaire bulle de me dire de s'il vous plaît remplir ce champ (Mais avec un message général, pas avec le message défini dans le modèle.). avec la méthode de recherche comme vous l'avez deviné je ne suis pas d'appeler la méthode save.
OriginalL'auteur Calamity Jane | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
Donc je suppose que j'ai trouvé le problème et au moins obtenu une varation de travail:
Ce que j'utilise maintenant est:
Je suppose que ce que j'attendais, les champs ne serait pas marquée avec de la graisse de l'étiquette et de l'astérisque. Ceux qui sont encore là, mais que vous n'avez pas à remplir dans le plus. Et les fois où j'ai testé avec vraiment submittig la forme, je suppose que j'ai eu l'un des 99 variations, ce qui était vraiment mauvais.
Si cela me rend heureux est à moi de décider, mais, évidemment, je peux éteindre la validation HTML5.
Si je ne veux pas avoir les étiquettes non gras & astérisque, est-il une option?
Calamity Jane
OriginalL'auteur Calamity Jane
La solution est en fait beaucoup plus simple. Si vous souhaitez désactiver la validation dans des vues spécifiques vous n'avez en fait avoir à se référer à un non-modèle existant lorsque vous créez le formulaire. Par exemple, vous pouvez faire quelque chose comme
echo $this->Form->create('PartnerSearch');
Dans votre contrôleur, vous pouvez accéder aux champs de formulaire via:
au lieu de la manière habituelle:
OriginalL'auteur bicycle
Pour moi, pour passer le navigateur de validation, oui,
array('novalidate' => true)
fonctionne.Le label non gras & astérisque,
OriginalL'auteur Sithu
Dans mon cas, j'ai utilisé bouton pour la soumission du formulaire. Cela m'a permis plus de souplesse. Dans ce cas, j'ai utilisé ensuite la propriété 'formnovalidate' pass dans le tableau d'options pour le bouton. Le formulaire devrait ressembler à quelque chose comme ce qui suit:
OriginalL'auteur Hernanibus