当前位置: 首页 > 知识库问答 >
问题:

如何验证Laravel 5中的路线参数?

巫马安怡
2023-03-14

正如您所知,Laravel 5改变了您调用验证器的方式,旧的方式是调用验证器facade,但是现在在基本控制器类中有validateRequests特性,但是validate方法接受请求作为值数组,但是当您定义路由参数时,这些值未存储在请求,因此如何验证这些参数?

编辑:

路线:

Route::get('/react-api/{username}', 'ProfileController@getUsername');

控制器:

public function getUsername(Request $request, $username)
{
     $v = $this->validate($request, ['username' => 'required']);
}

那么,问题是如何验证这个用户名参数?


共有3个答案

方奕
2023-03-14
public function listTurns($doctor_id, $limit, $offset){
        $r = [
            'doctor_id' => $doctor_id,
            'limit' => $limit,
            'offset' => $offset,
        ];

        $validator = Validator::make($r, [
            'doctor_id' => 'required|numeric|min:1|exists:doctors,id',
            'limit' => 'required|numeric|min:1',
            'offset' => 'required|numeric|min:0',
        ]);
}
梁盛
2023-03-14

马尼克斯的回答对我不起作用,我和伊利亚斯有同样的问题。问题是路由参数不能自动提供给FormRequest。我最终在特定的FormRequest类中重写了all()函数:

public function all()
{
    // Include the next line if you need form data, too.
    $request = Input::all();
    $request['username'] = $this->route('username');
    return $request
}

然后,您可以按正常方式对规则进行编码:

public function rules()
{
    return [
        'username' => 'required',
    ];
}
解阳泽
2023-03-14

如果您计划直接在控制器方法中执行此操作,您可以执行以下操作:

        public function getUser(Request $request)
    {
        $request->merge(['id' => $request->route('id')]);
        $request->validate([
            'id' => [
                'required',
                'exists:users,id'
            ]
        ]);
    }

要在自定义FormRequest类中执行此操作,请添加以下内容:

    protected function prepareForValidation() 
    {
        $this->merge(['id' => $this->route('id')]);
    }

在您的规则方法中:

    public function rules()
    {
        return [
            'id' => [
                'required',
                'exists:users,id'
            ]
        ];
    }
 类似资料:
  • 下面的代码是Quarkus Microprofile API应用程序中控制器的一部分。 它返回分页的帐户列表。 当用户调用API时,提供了错误的“限制”或“偏移”类型,即: 就像它应该的那样?

  • 可以在路由规则定义的时候调用validate方法指定验证器类对请求的数据进行验证。 例如下面的例子表示对请求数据使用验证器类app\index\validate\User进行自动验证,并且使用edit验证场景: Route::post('hello/:id', 'index/hello') ->model('id', 'app\index\model\User') ->valida

  • 我的控制器中有请求,是MongoId的字符串版本。如果我使用无效的字符串格式(与MongoId格式不匹配)调用此请求,则该请求将一直执行,直到MongoDB调用抛出内部服务器错误。 我如何验证,例如或"ANWPINREBAFSOFASD"未被验证,并在我的请求中尽早停止 电流控制器endpoint: 该服务称为:

  • 问题内容: 谁能告诉我如何在内验证? 我需要它来防止用户单击“保存”,除非同时输入了两个字段。 到目前为止,这是我的代码: 这是我用于验证电子邮件字段的功能: 问题答案: 这可以通过扩展:

  • 参数验证功能 1 是基于 JSR303 实现的,用户只需标识 JSR303 标准的验证 annotation,并通过声明 filter 来实现验证 2。 Maven 依赖 <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.0.

  • 在给定的json文档中,如何验证是否存在json路径? 我使用的是jayway jsonpath,代码如下 上述代码可能会引发以下异常 通用域名格式。乱穿马路。jsonpath。PathNotFoundException:路径:$['a.b.c']没有结果 为了缓解这种情况,我打算在尝试使用JsonPath读取该路径之前验证该路径是否存在。阅读 作为参考,我看了以下两个文档,但没有真正得到我想要的