Laravel comment rediriger les requêtes vers bootstrap fenêtre de dialogue modale
Je veux retourner à mon modale de dialogue de modification de formulaire pour afficher les erreurs de validation, mais à l'aide de Redirect::back
je viens de finir la page HTML sans la fenêtre modale.
- Je utiliser BootstrapDialog pour charger mon attendee.edit
route dans une boîte de dialogue modale à qui affiche un formulaire de modification.
HTML
<td>{{link_to_route('attendee.edit','',array($attendee->id), array(
'class'=>'edit-attendee btn btn-info btn-xs glyphicon glyphicon-pencil',
'data-title' => 'Edit Attendee'))}}
</td>
JQuery appel à BootstrapDialog
$(document).ready(function(){
$('.btn.edit-attendee').click(function(e){
e.preventDefault();
url = $(this).attr('href');
BootstrapDialog.show({
title: $(this).data('title'),
message: $('<div></div>').load(url),
buttons: [{
label: 'Update',
action: function(dialogRef) {
$('form').submit();
}
}]
});
});
});
Contrôleur
public function update($id)
{
$attendee = Attendee::findOrFail($id);
$validator = Validator::make($data = Input::all(), Attendee::$rules);
if ($validator->fails())
{
return Redirect::back()->withErrors($validator)->withInput();
}
$attendee->update($data);
return Redirect::route('attendees.index');
}
Après j'ai modifier la forme que je veux pour revenir à la fenêtre modale pour afficher les erreurs de validation, mais je viens de finir la page HTML sans le dialogue. Comment puis-je rediriger le dos à la fenêtre modale?
Mise à JOUR
ajouté id
de contrôleur de retour
return Redirect::back()->withErrors($validator)->withInput()->with('id', $id);
Ajouté Jquery
@if(!empty(Session::get('id')))
$(document).ready(function(){
url = "{{ URL('attendee') . '/' . Session::get('id'). '/edit' }}";
BootstrapDialog.show({
title: $(this).data('title'),
message: $('<div></div>').load(url),
buttons: [{
label: 'Update',
action: function(dialogRef) {
$('form').submit();
}
}]
});
});
@endif
Cette rouvre la fenêtre modale s'il y avait une erreur mais le produit de retour si pas. Je n'aime pas la façon dont il se ferme et se rouvre les modaux et les erreurs de validation ne sont pas transmises à l'modal donc je ne recommande pas de le faire de cette façon.
OriginalL'auteur Phil | 2014-12-24
Vous devez vous connecter pour publier un commentaire.
J'ai juste fait quelque chose comme cela. Il vous suffit d'utiliser la lame de template!
Et puis dans votre lame modèle:
Cela va créer un script qui ouvre la boîte de dialogue à chaque fois que code_erreur est présent et est égal à 5!
J'ai eu à utiliser de Session:get pour récupérer ma variable. Vous ne savez pas comment vous l'avez obtenu pour le faire sans. J'ai mis à jour ma question pour montrer ce que j'ai finalement fait. Aussi mon $messages d'erreur ne passe pas à mon modal. Je vais poser une nouvelle question pour obtenir de l'aide avec cela.
Oui, vous devez utiliser la Session::get car lorsque vous utilisez la Redirection il va remplacer l'actuel flash les messages et les transmettre à l' $ancien tableau.
OriginalL'auteur Zach Kauffman
Sonne comme vous avez besoin d'une condition dans votre affichage pour ouvrir la boîte de dialogue si des erreurs sont trouvées dans la session:
.click
avec.trigger("click");
je pense que je peux utiliser la suggestion de @Zach pour retourner le attendee_id pour identifier le bouton en quelque sorte
oh gotcha...concernant le déclencheur, vous pouvez simplement utiliser .cliquez sur ainsi et c'est un raccourci dans ce cas.
OriginalL'auteur prograhammer
Cela a fonctionné pour moi.
Dans mon modal:
De mon point de vue:
Dans mon contrôleur, j'ai simplement redirigé vers la vue normale.
OriginalL'auteur Leonard Harley
La seule chose que je pouvais penser, c'est mettre quelque chose comme ceci:
Lorsque la page est chargée par une requête get, cette valeur doit être réglé sur "", comme
Input::old('show')
n'est pas défini (est bien, mais est réglé sur ""). Ensuite, lorsque vous validez le formulaire, modifiez la valeur de cette entrée:De sorte que si/quand la redirection de la page, la valeur de ce caché entrée sera réglé à "oui" au lieu de "". Ensuite, poignée en Javascript:
L'espoir qui fait sens!
OriginalL'auteur Tim Lewis