2016-07-18 5 views
0

上のファイルパスをルーティング:routes.phpのオン405(メソッド許可されていません)UserController.phpがあるユーザーアカウントの更新要求に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); 
    } 

 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', 
     ]); 

そして、ビュー上:

@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 

私は405(Method Not Allowed)を取得しています。 ファイルが正しくアップロードされました。正しいファサードを使用しています。 正しく表示されないURLルートだけですが、提案はありますか?

Tnks。

+0

Iあなたのルートのどこにでも定義されたルート 'account'を見ていないので、あなたが存在しないルートにリダイレクトしようとしているように見えます。 – Derek

+0

はい、ルートアカウントが存在します。編集されました。 Tk: –

答えて

0

route('account')は存在しないようですか?あなたはそれを作成する必要があります。

+0

はい、ルートアカウントが存在します。編集されました。 Tnks :) –

0

[OK]を、バグ発見:

routes.phpのには、次のようになります。

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

あなたaccount.imageルートはルートを使用する必要があります::ルートを取得していない::ポスト

+0

はい、確かに。正しい解決策。 Tnks –