2016-04-07 13 views
0

Ich habe eine Benutzerressource mit ist in der users Tabelle verknüpft.Benutzer bearbeiten Ressource funktioniert nicht

Meine Route:

Route::resource('user', 'UserController'); 

UserController.php

public function edit($id) 
{ 
    $user = User::find($id); 
    return view('user.edit')->with(array('user'=>$user)); 
} 

public function update(Request $request, $id) 
{ 
    $rules = array(
     'name' => 'required', 
    ); 

    $validator = Validator::make(Input::all(), $rules); 
    if ($validator->fails()) 
    { 
     return Redirect::to('user/'.$id.'/edit')->withInput()->withErrors($validator); 
    } 
} 

Und meine Ansicht

{!! Form::model($user, array('route' => array('user.update', $user->id), 'method' => 'PUT', 'class' => 'form-horizontal')) !!} 
    @if (count($errors) > 0) 
    <div class="alert alert-danger"> 
      <strong>Whoops!</strong> There were some problems with your input.<br><br> 
      <ul> 
       @foreach ($errors->all() as $error) 
        <li>{{ $error }}</li> 
       @endforeach 
      </ul> 
     </div> 
    @endif 

    <div class="flash-message"> 
     @foreach (['danger', 'warning', 'success', 'info'] as $msg) 
      @if(Session::has('alert-' . $msg)) 
      <p class="alert alert-{{ $msg }}">{{ Session::get('alert-' . $msg) }}</p> 
      @endif 
     @endforeach 
    </div> 

    <div class="form-group"><label class="col-sm-2 control-label">Name</label> 
     <div class="col-sm-10"><input type="text" name="name" id="name" value="{{$user->name}}" class="form-control"></div> 
    </div> 

    <div class="form-group"><label class="col-sm-2 control-label">ID Number</label> 
     <div class="col-sm-10"><input type="text" name="id_number" id="id_number" value="{{$user->id_number}}" class="form-control"></div> 
    </div> 

    <div class="hr-line-dashed"></div> 
    <div class="form-group"> 
     <div class="col-sm-4 col-sm-offset-2"> 
      <button class="btn btn-primary" type="submit">Save changes</button> 
     </div> 
    </div> 
{!! Form::close() !!} 

Also mit diesem Setup ich erwarten, dass, wenn der Knopf auf meiner Seite einreichen klicken wird in der update() Funktion gehen, genau wie meine andere Ressource. Aber Problem ist, wenn ich es mir

zu werden direkt einreichen klicken
http://localhost/hrs/public/user/1 

und eine weiße leere Seite ohne Fehler, was so überhaupt. Also bedeutet es, dass es zu meiner update Funktion geht? Ich befolge dasselbe Muster mit meiner anderen Ressource und dies ist die einzige, die nicht funktioniert.

+0

Vielleicht erhalten Sie gerade Validierungsfehler nicht? Diese URL ist der richtige Pfad für die 'update' Methode, also denke ich, dass alles gut funktioniert. Versuchen Sie, 'dd ('here')' in Ihre 'update' Methode einzufügen. Ich wette, Sie sehen 'hier' :) –

+0

@ GiedriusKiršys Danke für den Vorschlag. Ich weiß endlich, was los ist. haha die Anfrage geht nach dem Validator fehlschlägt. Da ich den sonst Teil nicht habe, wird es nichts tun haha ​​ – jackhammer013

Antwort

0

Sie haben eine falsche Webserverkonfiguration. Sie sollten Ihren Webserver (normalerweise Apache oder nginx) auf ein public Verzeichnis Ihres Laravel-Projekts verweisen. Starten Sie danach den Webserver neu.

Zum Beispiel für Apache korrekte Konfiguration in etwa so sein wird:

DocumentRoot "C:/xampp/htdocs/hrs/public" 
<Directory "C:/xampp/htdocs/hrs/public"> 
+0

Hi. Danke für die Hilfe, aber es ist nichts falsch mit meinem öffentlichen Verzeichnis, da ich in der Lage bin, das System und alles einzuloggen. Problem ist die Update-Methode, aber ich habe es jetzt behoben – jackhammer013

+0

Wenn Laravel URL mit einer Öffentlichkeit darin baut, bedeutet das, dass Sie falsche Konfiguration haben. Sie werden viele ähnliche Fehler finden, wenn Sie das nicht beheben. –

+0

Es ist in Ordnung, wenn ich die Öffentlichkeit in der URL habe, weil ich in Dev Stage bin, entferne ich die Öffentlichkeit in der Produktion. Ich verstehe den virtuellen Host. Anyways mein Problem in meiner Frage ist nur ein ich habe vergessen, den 'else' Teil meines Codes hinzuzufügen und hat nichts mit URLs oder Direcotry zu tun :) – jackhammer013

0

das Problem gefunden, ich habe nicht den else Teil der Validierung. Da geht die Veranstaltung hin. Da ich es nicht habe, wird es nichts tun.

$validator = Validator::make(Input::all(), $rules); 
    if ($validator->fails()) 
    { 
     return Redirect::to('user/'.$id.'/edit')->withInput()->withErrors($validator); 
    } 
    else 
    { 
     dd($rules); 
    }