使用参数创建[Laravel 5.2]

4

我想在create操作中使用一个参数,但是尝试访问该操作时出现以下错误:

App\Http\Controllers\AdsDiagController::create()缺少第1个参数

这是create操作:

public function create($id){
    $record = TestRecord::findOrFail($id);
    return view("adsdiag.create", ["record" => $record]);
}

这里是操作链接:

<a href="{!! action('AdsDiagController@create', $record->id ) !!}">创建</a>

路由如下:

Route::resource('adsdiag', 'AdsDiagController');

我是laravel的新手,对于路由非常困惑。感谢任何帮助。
2个回答

3
为了解决您的问题,您应该在您的route.php中使用。
Route::get('adsdiag/{id}/',AdsDiagController@create);

原因

当您调用 Route::resource('adsdiag', 'AdsDiagController') 时,它会生成以下路由:

Route::get('adsdiag','AdsDiagController@index');
Route::post('adsdiag','AdsDiagController@store');
Route::get('adsdiag/create','AdsDiagController@create'); // you can see that create method doesn't have any arguments here.
Route::get('adsdiag/show/{id}','AdsDiagController@show');
Route::post('adsdiag/update','AdsDiagController@update');
Route::get('adsdiag/edit/{id}','AdsDiagController@edit');
Route::delete('adsdiag/destroy/{id}','AdsDiagController@destroy');

由于 Route::get('adsdiag/{id}/',AdsDiagController@create); 没有被 Resource 生成,因此您需要显式地将其包含在路由中。


0

无论只有一个参数,您都需要将参数传递给action()辅助方法中的数组:

action('AdsDiagController@create', [$record->id])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接