Ich sehe keine einfache Lösung für diese, so wird gechuffed sein, wenn bewiesen, falsch. Kurz gesagt, modaler Dialog erscheint, Benutzer einen nicht eindeutigen Wert eingibt, Ursachen Feldüberprüfung vorlegen, aber immer noch schließt zum Scheitern verurteilt modal:verhindern modal close on submit (Laravel/Bootstrap)
<div class="modal fade" id="newtargetModal"
tabindex="-1" role="dialog"
aria-labelledby="newtargetModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">Target (e.g. hostname)
<button type="button" class="close"
data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
@include('applications.add')
</div>
</div>
</div>
</div>
die umfassen (applications.add):
{!! Form::open(['method'=> 'POST', 'action'=> '[email protected]', 'class'=>'form-horizontal']) !!}
{{csrf_field()}}
<div class="form-group{{ $errors->has('app_name') ? ' has-error' : 'unique:supported_apps:app_name' }}">
<label for="app_name" class="col-md-4 control-label">Name</label>
<div class="col-md-8">
<input id="app_name" type="text" class="form-control" name="app_name" style="margin-bottom: 10px"
value="{{ old('app_name') }}" required autofocus>
@if ($errors->has('app_name'))
<span class="help-block">
<strong>{{ $errors->first('app_name') }}</strong>
</span>
@endif
</div>
</div>
<input type="submit" name="submit" class=" btn-primary" value="Add">
{!! Form::close()!!}
Wenn bei der Validierung festgestellt wird, dass app_name nicht eindeutig sein soll, wenn die Schaltfläche "Hinzufügen" gedrückt wird, wird das Modal geschlossen. Beim erneuten Öffnen ist zu sehen, dass die $ error-Behandlung mit "Der App-Name wurde bereits vergeben" versehen ist. Das Include wird in einem anderen Codeteil (nicht in einem Modal) verwendet. Ich fragte mich, ob es eine Möglichkeit gibt, die Add-Schaltfläche zu verhindern, die das Modal schließt, wenn $ error gesetzt ist. Vielen Dank im Voraus für einen Hinweis zu diesem Thema. Kevin
Edit:
Ich versuche tat folgendes:
$(document).ready()
{
@if(count($errors)>0)
$('#newtargetModal').modal('show');
@endif
}
Aber ich will nicht meine eigene Frage beantworten, doch .. Es scheint eine freche Lösung, aber ich habe nicht getestet es reicht. Erster Test schlägt vor, dass es das Problem des Popups des Dialogs back up ....
Ja, Sie müssen das Formular über Ajax senden ... und dann, wenn es Fehler gab die Seite wird nicht übergeben und es wird bleiben, und es sollte die Fehler zeigen – lewis4u
Danke, ich habe diesen Eindruck von einer anderen ähnlichen Frage aber ich hatte gehofft, dass meins so unterschiedlich ist, dass es ohne Ajax möglich wäre. Schade, dass du extra arbeiten musst! – KevinY
yeah Leider, wenn Sie versuchen, mit nur HTML zu senden, wird es sofort zu dieser Funktion springen. Ich werde meinen Kommentar als Antwort OK machen. Ich werde ein Beispiel geben ... nur einen Moment bitte – lewis4u