首页 > 解决方案 > 在 PHPDoc 中描述控制器查询参数

问题描述

我的 Laravel 控制器上有一个 index 方法,它接受一个可选的查询字符串参数。

这应该如何在方法的 PHPDoc 块中表示?

雇主控制器.php:

/**
 * @param Request $request
 * @return Response
 * Returns list of Employers
 */
public function index(Request $request) {
    // This is the optional parameter which needs to be represented
    // in the PHPDoc block
    $collectiveAgreement = $request->query('collective_agreement');

    ...
}

标签: phplaravelphpdoc

解决方案


如果您的目的是记录这些字段,我建议创建一个处理所有逻辑的 FormRequest,然后将表单请求注入控制器。这样,您就知道请求是在哪里形成的,然后转到该类以查看字段,甚至更好:它们通过验证的规则。

php artisan make:request ListUsersRequest

ListUsersRequest.php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ListUsersRequest extends FormRequest {

    public function rules()
    {
        return [
            'collective_agreement' => ['here', 'goes', 'your', 'rules'],
            'another_field'        => ['here', 'goes', 'more', 'rules'],
        ];
    }

    public function authorize()
    {
        return true;
    }
}

然后,回到你的控制器

用户控制器.php

public function index(ListUsersRequest $request)
{   //                ^^^^^^^^^^^^^^^^
    $data = $request->validated();
    $collectiveAgreement = $data['collective_agreement'];
//  Or as you did:   
//  $collectiveAgreement = $request->query('collective_agreement');
}

推荐阅读