2017-10-04 139 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'); 
     } 
    } 

而且我认为代码是

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

请让我知道我做错了,因为我在laravel新。

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

感谢名单解决我的问题 –

+0

大,很高兴帮 – zuif

+0

请接受答案如果它解决@NidaAkram – Cowgirl

0

你定义的资源。要做到这一点,正确的方法是:

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

的DELETE方法名称为doctor.destroy,并在控制器方法是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当SO会让我这样做,我的错误,抱歉编辑:我不能撤消downvote,除非你编辑的问题 – Desh901

1

你做它错了,看看Resource Controllers的文档。

基本上,如果您使用Route::resource()方法定义资源,则不能指定控制器操作,因为资源控制器需要提供兼容的REST方法。

所以,如果你想创建你必须指定路线REST资源控制器:

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

所以你必须指定你的控制器类名称。

然后在你的控制器,你必须指定所需的方法:

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 
    } 

} 

如果你只是想揭露edit形式而不REST逻辑使用Request::get()方法:

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

如果您正在缓存您的路线,请记住使用工匠命令序列刷新它们

php artisan route:clear 
php artisan route:cache 

或更简洁只是 php artisan route:cache