【问题标题】:Laravel running function from button in blade从刀片中的按钮运行 Laravel 功能
【发布时间】:2019-12-10 08:54:37
【问题描述】:

我在获取刀片文件中的按钮以正确运行控制器中的功能时遇到问题,当我单击该按钮时,我得到一个方法不允许的异常,并且无法弄清楚哪些设置不正确

据我所知,这就像我为不同的刀片和控制器设置的另一个按钮,除非我忽略了某些东西,这就是我在这里的原因。如果您需要其他代码,请告诉我。

首先是我的路线:

Route::post('/viewPatient/{user}/discharge', 'PatientController@discharge')->name('patients.discharge');
Route::post('/viewPatient/{user}/reAdmitt', 'PatientController@reAdmitt')->name('patients.reAdmitt');  
Route::post('/viewPatient/{user}/reAdmitted', 'PatientController@reAdmitted')->name('patients.reAdmitted');

接下来的控制器功能

public function discharge(User $user)
    {
        $user->discharged = true;
        $user->discharged_date = now();
        $user->current_facility_id = null;
        $user->save();
        // find all the users documents that are not historical
        $documents = Document::where('user_id', $user->id)->where('historical', false)->get();
        // mark them all as historical
        foreach($documents as $document){
            $document->historical = true;
            $document->save();
        }

        return $this->index(); 
    }

    public function reAdmitt(User $user)
    {
        $user->discharged = false;
        $user->readmitting = true;
        $user->reAdmission_start = now();
        $user->save();

        return $this->index(); 
    }

    public function reAdmitted(User $user)
    {
        $user->discharged = false;
        $user->readmitting = false;
        $user->reAdmitted_on = now();
        $user->save();

        return $this->index(); 
    }

最后是按钮本身

<button><a href="{{route('patients.reAdmitt', $user)}}">Readmitt Patient</a></button>
<button><a href="{{route('patients.reAdmitted', $user)}}">Patient Signed reAdmission</a></button>
<button><a href="{{route('patients.discharge', $user)}}">Discharge Patient</a></button>

预期的结果是它应该运行该功能并更新数据库,我知道该功能可以出院,因为我不小心将路线更改为 get 并且在页面加载并将其中一名患者标记为已出院时它运行。

【问题讨论】:

  • 简单按钮将触发GET 请求,但您将路由定义为POST 请求 - Route::post(...。一般的经验法则是,如果动作将是破坏性的(即CrUD),那么它应该是一个发布请求。因此,我会将您的按钮更改为带有隐藏字段的实际表单。

标签: php laravel post laravel-routing


【解决方案1】:

您没有提交任何表格。所以你不需要使用发布路线。 &lt;a&gt; 标签用于获取路由。因此,将您的路线更改为

Route::get('/viewPatient/{user}/discharge', 'PatientController@discharge')->name('patients.discharge');
Route::get('/viewPatient/{user}/reAdmitt', 'PatientController@reAdmitt')->name('patients.reAdmitt');  
Route::get('/viewPatient/{user}/reAdmitted', 'PatientController@reAdmitted')->name('patients.reAdmitted')

;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2016-08-30
    相关资源
    最近更新 更多