如何将数据从路由组传递到其控制器?

时间:2020-06-28 17:06:38

标签: php laravel laravel-routing laravel-controller

我在Laravel中有一个路由组,该路由组的参数如下:

Route::group(['prefix' => '{ProjectCode}'], function () {
    Route::get('/categories', 'CategoriesController@Categories');
    Route::get('/add-category', 'CategoriesController@AddCategory');
});    

ProjectCode是一个ID,用于从数据库中获取一些数据 我想将检索到的数据传递给它们位于路由组子目录中的控制器,并避免在控制器的每个功能中获取数据

1 个答案:

答案 0 :(得分:1)

您可以使用“隐式/显式路由模型绑定”,假设您拥有Project模型,则可以使用此控制器方法(对于参数,使用camelCase作为参数,而控制器的方法名称不使用PascalCase):

Route::group(['prefix' => '{projectCode}'], function () {
    Route::get('/categories', 'CategoriesController@pategories');
    Route::get('/add-category', 'CategoriesController@addCategory');
});  

class CategoriesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @param  Request  $request
     * @return \Illuminate\Http\Response
     */
    public function categories(\App\Project $projectCode)
    {
        //
    }
}

您可能希望使用自己的分辨率绑定,请在模型上覆盖resolveRouteBinding

/**
* Retrieve the model for a bound value.
 *
 * @param  mixed  $value
 * @param  string|null  $field
 * @return \Illuminate\Database\Eloquent\Model|null
 */
public function resolveRouteBinding($value, $field = null)
{
    return $this->where($field ?? $this->getRouteKeyName(), $value)->first();
}

有关更多信息,请参见Laravel docs