2010-04-14 8 views
0

J'ai récemment été affecté un projet de conception CSS & dans un environnement CakePHP et je voudrais savoir si je peux ajouter un bouton supplémentaire au formulaire, par exemple un lien "inscription".Ajout d'un bouton de lien supplémentaire à un formulaire (en utilisant formulaire-> créer)

La forme est actuellement:

echo $form->create('User', array('action' => 'login')); 
    echo $form->inputs(array(
     'legend' => 'Please log in:', 
     'username', 'password')); 
echo $form->end('Login'); 

Je voudrais injecter un bouton qui va à une action de « registre », de préférence après le « login » bouton, sur la même ligne, comme ceci:


Nom d'utilisateur: []

mot de passe: []

[Connexion] [Inscription]


J'ai tout sauf le bouton 'enregistrer'. Est-ce possible en utilisant la création de formulaire 'automagique'? Je vous remercie.

Répondre

2

Oui, assez facile dans Cake! Utilisez simplement la méthode "bouton" de FormHelper.

echo $form->button('Register'); 

bien sûr, cela va quand même envoyer l'action à l'URL spécifiée dans le formulaire :: create, mais vous pouvez faire un peu de magie dans les contrôleurs d'agir correctement sur la demande.

http://book.cakephp.org/view/791/button

+0

Salut, merci pour la réponse. Mais le problème que j'ai est de travailler cette "magie". J'ai un contrôleur ('users') et une action ('register') présents dans le lien qui existe maintenant pour cela. Mais je voudrais le convertir en un bouton de forme qui fait la même magie, mais je n'arrive pas à le faire fonctionner. merci, Cour – supergalactic

+0

Je suis un peu confus. Voulez-vous dire que vous souhaitez que le bouton de formulaire redirige vers une URL différente (par exemple,/users/register versus/user/login)? Dans ce cas, vous avez plusieurs options: utilisez js pour réécrire l'attribut 'action' du formulaire. Vous pouvez rendre l'ensemble de l'action de formulaire postée dans/users/register, puis dans votre méthode UsersController :: register(), appelez simplement login si c'est le bouton sur lequel ils ont cliqué. Je recommande d'envoyer les données à une fonction qui détermine si c'est un login/registre basé sur le bouton. –

+0

J'ai juste vu la réponse de Spawn - sa solution ferait la réécriture de js. Mais il ne se dégrade pas gracieusement si quelqu'un a désactivé js, c'est pourquoi je ne le recommanderais pas (l'autre méthode décrite ci-dessus fonctionnera pour n'importe quelle configuration de navigateur). –

0

Peut-être que vous pouvez essayer ceci:

echo $form->button('Register', array('onclick'=>"window.location='/users/register';")); 
0

je ferais une autre forme.

echo $form->create('User', array('action'=>array('controller'=>'users','action'=>'register')); 
echo $form->end('Register'); 

Ensuite, au moins vous n'êtes pas vraiment « piratage » le cadre du tout, et avec le code sémantiquement correct, avec une action précise.

Questions connexes