2017-10-04 21 views
-1

ちょっとユーザーが更新ボタンをクリックすると、doctorEditという別のページに行きます。私は自分のWebファイルで経路を定義しましたが、定義されていないエラー経路が何度も繰り返されています。誰も私の問題を再現するために私を助けてもらえますか?以下は私のコードです。私はそれを定義したとしても経路が定義されていません

ルートコード:

Route::resource('doctor/doctorEdit','[email protected]'); 

コントローラー・コード

<?php 

    namespace App\Http\Controllers; 

    use Illuminate\Http\Request; 
    use Illuminate\Support\Facades\DB; 
    use App\Http\Controllers\Controller; 

    class DoctorController extends Controller 
     { 
    public function edit() 
     { 
    return view('doctor.doctorEdit'); 
     } 
    } 

そして、私のビューコードは、私がlaravelで新しいですので、私が間違っているのか知っている聞かせください

<form class="row" method="POST" action="#" onsubmit = "return confirm('Are you sure?')"> 
        <input type="hidden" name="_method" value="DELETE"> 
        <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
        <a href="{{ route('doctor/doctorEdit', ['id' => $doctor->id]) }}" class="btn btn-warning col-sm-3 col-xs-5 btn-margin" style="width:100px; margin-left:20px;"> 
        Update 
        </a> 
        <button type="submit" class="btn btn-danger col-sm-3 col-xs-5 btn-margin" style="width:100px; margin-left:20px;"> 
         Delete 
        </button> 
       </form> 

です。

enter image description here

答えて

3

という名前のルートにGETメソッドを使用してみてください。

あなたroutefile

Route::get('doctor/doctorEdit','[email protected]')->name('doctor.edit'); 

あなたのビューコード

<form class="row" method="POST" action="#" onsubmit = "return confirm('Are you sure?')"> 
        <input type="hidden" name="_method" value="DELETE"> 
        <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
        <a href="{{ route('doctor.edit', ['id' => $doctor->id]) }}" class="btn btn-warning col-sm-3 col-xs-5 btn-margin" style="width:100px; margin-left:20px;"> 
        Update 
        </a> 
        <button type="submit" class="btn btn-danger col-sm-3 col-xs-5 btn-margin" style="width:100px; margin-left:20px;"> 
         Delete 
        </button> 
       </form> 
+0

ありがとうは私の問題、目的がそれを削除ない、医者を編集することです@NidaAkram –

+0

グレートを、解決しました。 – zuif

+0

は答えを受け入れてください助けてうれしい – Cowgirl

0

あなたは、リソースを定義しています。これを行うための正しい方法は次のとおりです。

Route::resource('doctor','DoctorController'); 

DELETEメソッドの名前はdoctor.destroyで、あなたのビューコードは、あなたがやっている

 <form class="row" method="POST" action="{{ route('doctor.delete') }}" onsubmit = "return confirm('Are you sure?')"> 
       <input type="hidden" name="_method" value="DELETE"> 
       <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
       <a href="{{ route('doctor.edit', ['id' => $doctor->id]) }}" class="btn btn-warning col-sm-3 col-xs-5 btn-margin" style="width:100px; margin-left:20px;"> 
       Update 
       </a> 
       <button type="submit" class="btn btn-danger col-sm-3 col-xs-5 btn-margin" style="width:100px; margin-left:20px;"> 
        Delete 
       </button> 
      </form> 
+0

を解くなら – Desh901

+0

医者を削除するフォームと、医師を編集するリンクがあります。医師を削除するルートは「doctor.destroy」、医師を編集するルートは「doctor.edit」である。 –

+0

ああ、あなたが正しいです、私はフォームの中にDELETEメソッドが表示されませんでしたので、私はそれを私の間違い、申し訳ありません、私はdownvoteを削除しています編集:質問を編集しない限り、私はdownvoteを元に戻すことができません – Desh901

1

あるべきコントローラのメソッドはdestroy

ですそれは間違って、Resource Controllersのドキュメントを見てください。

Route::resource()メソッドでリソースを定義する場合、リソース・コントローラーは互換性のあるRESTメソッドを提供する予定であるため、コントローラー・アクションを指定しないでください。

だから、あなたはあなたのルートを指定する必要がありますRESTリソースコントローラを作成する場合のように:

Route::resource('doctor', 'DoctorController')

コントローラのクラス名だけを指定する必要があります。

次に、あなたのコントローラに必要なメソッドを指定する必要があります。あなただけのRESTロジックはRequest::get()メソッドを使用せずにeditフォームを公開したい場合は

class DoctorController extends Controller 
{ 

    public function index() 
    { 
     // GET yourapp.com/doctor -> typically return all doctors 
    } 

    public function create() 
    { 
     // GET yourapp.com/doctor/create -> typically show doctor creation form 
    } 

    public function show() 
    { 
     // GET yourapp.com/doctor/{doctor_id} -> show a single doctor 
    } 

    public function store() 
    { 
     // POST yourapp.com/doctor -> create a new doctor 
    } 

    public function edit() 
    { 
     // GET yourapp.com/doctor/{doctor_id}/edit -> show edit form view 
     return view('doctor.doctorEdit'); 
    } 

    public function update() 
    { 
     // PUT|PATCH yourapp.com/doctor/{doctor_id} -> update a doctor 
    } 

    public function destroy() 
    { 
     // DELETE yourapp.com/doctor/{doctor_id} -> delete a doctor 
    } 

} 

を:

Request::get('doctor/doctorEdit', '[email protected]')->name('doctor.edit');

の場合あなたのルートをキャッシュすることは、職人のコマンドシーケンスを使用してそれらをリフレッシュすることを忘れないでください。

php artisan route:clear 
php artisan route:cache 

またはより簡潔にちょうど php artisan route:cache

関連する問題