2016-05-05 8 views
0

Ich möchte benutzerdefinierte Validierungsnachrichten an meine Ansicht übergeben, die eine benutzerdefinierte Anforderung beim Speichern einer Rolle verwenden.Warum Fehlermeldungen in Laravel-Ansichten nicht angezeigt werden?

Ich habe eine neue Anfrage erstellen StoreRoleRequest namens

<?php 

namespace App\Http\Requests; 

use App\Http\Requests\Request; 
use Illuminate\Contracts\Validation\Validator; 

class StoreRoleRequest extends Request 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'name' => 'required' 
     ]; 
    } 

    protected function formatErrors(Validator $validator) 
    { 
     return $validator->errors()->all(); 
    } 

    public function messages() 
    { 
     return [ 
      'name.required' => 'the name of the Role is mandatory', 
     ]; 
    } 
} 

Und dann in den RoleController wie diese diese kundenspezifische Anfrage an meine Speicher-Funktion übergeben:

public function store(StoreRoleRequest $request) 
{ 
    Role::create($request->all()); 
    return redirect(route('role.index')); 
} 

Ich habe eine Ansicht, die das schaffen zeigen Rollenform, bei der die Validierung korrekt zu funktionieren scheint, aber ohne dass mir ein Fehler angezeigt wird, selbst wenn ich sie so in die Ansicht rufe:

{!! Former::open()->action(route('role.store')) !!} 
@if (count($errors->all())) 
    <div class="alert alert-danger"> 
     @foreach ($errors->all() as $error) 
      <li>{{ $error }}</li> 
     @endforeach 
    </div> 
@endif 
{!! Former::text('name')->label('Groupe name') !!} 
{!! Former::text('display_name')->label('Displayed name') !!} 
{!! Former::text('description')->label('Description') !!} 

{!! Former::actions(Button::primary('Save')->submit(), 
        Button::warning('Clear')->reset() , 
        Button::danger('Close')->asLinkTo('#')->withAttributes(['data-dismiss' => 'modal']) 
)!!} 
{!! Former::close() !!} 

Hat jemand eine Idee warum die Fehler nicht in der Ansicht erscheinen? schleife ich etwas in der benutzerdefinierten Anfrage?

EDIT

NB: Auch in der Anmeldung und die Registrierung der Fehler bilden mehr nicht angezeigt wird.

In diesem Fall ich meine middlware ändern, die auf dem Web-['middleware' => ['web'] darauf hingewiesen wurde: perfekt angezeigt

Route::group(['middleware' => []], function() 
{ 
    // other routes 
    Route::resource('role', 'RoleController'); 
}); 

und alle meine Fehler.

Haben Sie die Ursache für dieses Problem gefunden?

+0

Es mag viele Gründe geben. Werfen Sie einen Blick auf http://StackOverflow.com/Questions/34454081/undefined-Variable-errors-in-Laravel/34454302#34454302 - es könnte helfen –

+0

Zuerst dump: '{{dd ($ error)}}' . Ich denke, das ist eine innere Sammlung und deshalb zeigt es überhaupt nichts. –

+0

@ MarcinNabiałek: die Middlware ist korrekt als genau die Antwort eingefügt, die Sie einreichen. – Drwhite

Antwort

1

Nach Ihrer Frage Update scheint es, Sie haben eine neuere Version von Laravel-Anwendung (nicht mit Laravel-Framework zu verwechseln). Um dies zu überprüfen, öffnen Sie die Datei app/Providers/RouteServiceProvider.php und verify method was ist der Inhalt der map Methode. Wenn es startet mapWebRoutes bedeutet dies, dass Sie 5.2.27+ Anwendung, die web Gruppe Middleware automatisch gilt.

Bei web Middleware angelegt wird automatisch Sie sollten nichtweb Middleware in Ihrer routes.php Datei anwenden, weil es ein unerwartetes Verhalten verursachen.

So sollten Sie entweder web Middleware von Ihrem routes.php im Falle entfernen Sie mapWebRoutes in Ihrer RouteServiceProvider Klasse definiert haben, oder Sie können Ihre RouteServiceProvider Klasse ändern nicht web Gruppe Middleware automatisch anzuwenden. Es liegt an Ihnen, welche Lösung Sie wählen.

Nur zum schnellen Nachschlagen:

0

Versuchen zu fragen, ob Fehler, die durch diese Art und Weise besteht:

@if($errors->any()) 
    // Your code 
    @foreach($errors->all() as $error) 
     <li>{{ $error }}</li> 
    @endforeach 
    // More code 
@endif 

Auch die formatErrors Funktion aus der Anfrage entfernen ... Sie brauchen es nicht ...

Die Funktion messages() ist verantwortlich für die Rückgabe Ihrer benutzerdefinierten Nachrichten ...

Grüße.

+0

Funktioniert nicht scheint es, dass das Problem nicht auf die Anzeige der Fehler ist, aber ich denke, ist etwas im Zusammenhang mit Sitzung! – Drwhite

+0

Ist dies die einzige Ansicht, in der Sie Probleme mit den Fehlerberichten haben? –

+0

Ich habe gerade mit der serverseitigen Validierung begonnen und dies ist die erste. – Drwhite

Verwandte Themen