2017-10-04 1 views
-1

Hey Ich arbeite an einem Code, in dem wenn Benutzer auf Update-Taste klickt es auf eine andere Seite, die DoctorEdit ist. Ich habe die Route in meiner Web-Datei definiert, aber sie gibt immer wieder den Fehler Route nicht definiert. Kann mir bitte jemand helfen, mein Problem zu lösen. Unten ist mein Code.Route nicht definiert auch ich habe es definiert

Leitungswegcode:

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

Controller-Code

<?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'); 
     } 
    } 

Und meine Ansicht Code ist

<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> 

Bitte lassen Sie mich wissen, was ich falsch mache, weil ich bei Laravel bin neu .

enter image description here

Antwort

3

Versuchen GET-Methode mit einer benannten Route.

Ihre routefile

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

Ihre Ansicht Code

<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

Thanx mein Problem gelöst –

+0

Große, Glad – zuif

+0

Bitte akzeptieren Sie die Antwort zu helfen, wenn es @NidaAkram gelöst ist – Cowgirl

0

Sie eine Ressource zu definieren. Der richtige Weg, dies zu tun ist:

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

Der Name für die DELETE-Methode ist doctor.destroy und die Controller-Methode ist destroy

Sie soll Ansicht Code

seine
 <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

Der Zweck ist, einen Arzt zu bearbeiten, löschen Sie es nicht. – Desh901

+0

Sie haben ein Formular zum Löschen eines Arztes und einen Link zum Bearbeiten eines Arztes. Die Route zum Löschen eines Arztes wird "arzt.destroy" genannt und die zum Bearbeiten eines Arztes ist "arzt.edit". –

+0

Oh, du hast Recht, ich habe die DELETE-Methode im Formular nicht gesehen, ich entferne den Downvote, wenn SO mich das machen lässt, mein Fehler, sorry EDIT: Ich kann den Downvote nur rückgängig machen, wenn du die Frage – Desh901

1

Sie tun Es ist falsch, werfen Sie einen Blick auf die Dokumentation Resource Controllers.

Grundsätzlich, wenn Sie eine Ressource mit Route::resource() Methode zu definieren, müssen Sie die Controller-Aktion nicht angeben, da die Resource Controller erwartet wird, kompatibel REST Methoden zur Verfügung zu stellen.

Also, wenn Sie wollen eine REST-Ressource-Controller erstellen Sie Ihre Route so angeben müssen:

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

so müssen Sie nur Ihren Controller-Klassennamen angeben.

Dann in Ihrem Controller müssen Sie erforderlichen Methoden angeben:

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

If:

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 
    } 

} 

Wenn Sie nur die edit Form ohne die REST-Logik verwenden, um die Request::get() Methode verfügbar machen möchten Wenn Sie Ihre Routen zwischenspeichern, denken Sie daran, sie mithilfe der Befehlsfolge

zu aktualisieren

oder prägnanter nur php artisan route:cache

Verwandte Themen