2016-07-18 24 views
0

Auf einem Benutzerkonto Aktualisierungsanforderung die UserController.php ist:405 (Methode nicht erlaubt), wenn Sie einen Pfad auf Datei Routing Laravel 5.2

public function postSaveAccount(Request $request) { 

      $this->validate($request, [ 
       'first_name' => 'required|max:120', 
      ]); 

      $user = Auth::user(); 
      $user->first_name = $request['first_name']; 
      $user->update(); 
      $file = $request->file('image'); 
      //todo: treat image and upload other formats, maybe unique hash. 
      $filename = $request['first_name'] . '-' . $user->id . '.jpg'; 
      if ($file) { 
       Storage::disk('local')->put($filename, File::get($file)); 
      } 
      return redirect()->route('account'); 
     } 

    public function getUserImage($filename) { 
     $file = Storage::disk('local')->get($filename); 
     return new Response($file, 200); 
    } 

Auf der routes.php:

 Route::get('/account', [ 
      'uses' => '[email protected]', 
      'as' => 'account', 
      'middleware' => 'auth', 
     ]); 

     Route::post('/updateaccount', [ 
      'uses' => '[email protected]', 
      'as' => 'account.save', 
      'middleware' => 'auth', 
     ]); 

     Route::post('/userimage/{filename}', [ 
      'uses' => '[email protected]', 
      'as' => 'account.image', 
     ]); 

Und auf dem Blick:

@section('content') 
    <section class="row new-post"> 
     <div class="col-md-6 col-md-offset-3"> 
      <header><h3>Your Account</h3></header> 
      <form action="{{ route('account.save') }}" method="post" enctype="multipart/form-data"> 
       <div class="form-group"> 
        <label for="first_name">First Name</label> 
        <input type="text" name="first_name" class="form-control" value="{{ $user->first_name }}" id="first_name"> 
       </div> 
       <div class="form-group"> 
        <label for="image">Image (only .jpg)</label> 
        <input type="file" name="image" class="form-control" id="image"> 
       </div> 
       <button type="submit" class="btn btn-primary">Save Account</button> 
       <input type="hidden" value="{{ Session::token() }}" name="_token"> 
      </form> 
     </div> 
    </section> 
    @if (Storage::disk('local')->has($user->first_name . '-' . $user->id . '.jpg')) 
     <section class="row new-post"> 
      <div class="col-md-6 col-md-offset-3"> 
       <img src="{{ route('account.image', ['filename' => $user->first_name . '-' . $user->id . '.jpg']) }}" alt="" class="img-responsive"> 
      </div> 
     </section> 
    @endif 
@endsection 

Ich bekomme eine 405 (Methode nicht erlaubt). Die Datei ist korrekt hochgeladen, ich benutze die richtigen Fassaden. Es wird nur die URL-Route angezeigt, die nicht richtig angezeigt wird.

Tnks.

+0

I Wenn auf Ihren Routen keine Route "account" angezeigt wird, scheint es, als würden Sie versuchen, auf eine nicht vorhandene Route umzuleiten. – Derek

+0

Ja, das Routenkonto existiert. bearbeitet. Tnks :) –

Antwort

0

route('account') scheint nicht zu existieren? Sie müssen es erstellen.

+0

Ja, Routenkonto existiert. bearbeitet. Tnks :) –

0

Ok, Bug entdeckt:

Auf der routes.php sein sollte:

Route::get('/userimage/{filename}', [ 
    'uses' => '[email protected]', 
    'as' => 'account.image', 
]); 
1

Ihre account.image Route mit Routen sollte :: bekommen und nicht Strecke :: Post

+0

Ja, tatsächlich. Richtige Lösung. Tnks –