Ale*_*yer 5 php validation laravel lumen
我正在尝试在 lumen 中实现自定义验证规则,并且正在遵循 lumen 5.6 的文档。它说参考 laravel 验证来了解如何使用验证。我目前正在尝试进行验证以检查该值是否为 true null。所以 $x === "" 意味着它失败 这是我的规则,位于我创建的 App\Rules 文件夹中。
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class TrueNull implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if($value === "") {
return false;
} else {
return true;
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute cannot be an empty string.';
}
}
Run Code Online (Sandbox Code Playgroud)
我直接从lumen文档复制了这个并对pass函数进行了修改。在我的模式中有
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable;
use App\Rules\TrueNull;
use Validator;
Run Code Online (Sandbox Code Playgroud)
然后
public function validate($data)
{
// make a new validator object
$v = Validator::make($data,
[
'x' => ['regex:/^(?=.+)(?:[1-9]\d*|0)?(?:\.\d+)?$/', new TrueNull]
]
}
Run Code Online (Sandbox Code Playgroud)
但是 TrueNull 的验证永远不会发生,因为我错过了连接或其他真正令人沮丧的事情,因为文档说这应该有效。这是我的控制器调用我正在验证的更新。
public function update(Request $request, $id)
{
/*
In middleware need to add community id to request.
*/
try {
$site = Site::findOrFail($id);
if ($site->validate($request->all())) {
$site->fill($request->all());
// save
$site->save();
} else {
return response()->json($site->errors(), 422);
}
} catch (Exception $e) {
return response()->json($e, 422);
}
return response()->json($site, 200);
}
Run Code Online (Sandbox Code Playgroud)
为了将来的参考,我找到了一段随机的代码片段,抵消了 Lumen 的基本文档。在我的 TrueNull 类而不是 Implements Rule 中,我将其更改为实现 ImplicitRule 并将使用更改为 \ImplicitRule,现在发现“”不是空值。
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\ImplicitRule;
class TrueNull implements ImplicitRule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if($value === "") {
return false;
} else {
return true;
}
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute cannot be an empty string.';
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12009 次 |
| 最近记录: |