【问题标题】:Laravel 5 submitted form to index using resource route as wellLaravel 5 也使用资源路由提交表单以进行索引
【发布时间】:2016-01-23 03:17:15
【问题描述】:

编辑:

我正在尝试完成一些简单的事情。在我的约会.index 视图中,我有一个表格。提交表单后,我想使用查询中的值,如下所示:

约会控制器:

public function index(Request $request)
{
    $statusId = $request->status;
    $labelId = $request->label;
    $monthId = $request->month;

    $appointments = Appointment::status($statusId)->label($labelId)->month($monthId)->get();

    return view('appointments', compact('appointments'));
}

我的模型中的一种方法(它们都相似):

public function scopeStatus($query, $statusId)
{
    if($statusId)
    {
        return $query->where('status_id', '=', $statusId);
    }
    else {
        return false;
    }
}

如果不是以下解决方案,最好的方法是什么?

操作:

我收到以下错误:

方法 App\Http\Controllers\AppointmentsController::store() 不存在

我知道这是因为我的路线:

Route::get('appointments', array('as' => 'appointments', 'uses' => 'AppointmentsController@index'));
Route::post('appointments', array('uses' => 'AppointmentsController@index'));
Route::resource('appointments', 'AppointmentsController');

如果我像这样更改发布路线,它会起作用:

Route::post('appointments/anythinghere', array('uses' => 'AppointmentsController@index'));

问题是,为什么会这样(因为资源路线,我理解,但为什么)以及如何“修复”它以便我仍然可以像上面一样使用我的路线?

【问题讨论】:

    标签: php laravel routing resources


    【解决方案1】:

    资源路由在您的控制器中创建存储操作。您可以指定追索行动的子集。

    在你的情况下试试

    Route::resource('appointments', 'AppointmentsController',
                    ['except' => ['store']]);
    

    【讨论】:

    • 谢谢,这确实可以,但我正在使用 store 方法来创建新约会。我想也许我应该找到另一种方法来完成我想做的事情。不过我会更新 OP :)
    • 是的,你应该找到另一种方法。您可以在这里查看laravel.com/docs/5.1/controllers#restful-resource-controllers 资源控制器的工作原理
    猜你喜欢
    • 2015-08-11
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2015-10-14
    • 2018-04-07
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多