【发布时间】:2019-10-22 01:52:39
【问题描述】:
我有一个自定义验证器:
$validator = Validator::make($request->all(), [
'name' => 'sometimes|unique:stock.containers|max:255',
]);
如果我这样做,我想抛出一个错误:
PUT:localhost/my/model?description=foobar
因为在这种情况下我只想接受name。然后我会确保我的$validator->valid() 只包含接受的字段。
这是我的控制器:
class ContainerController extends Controller
{
public function update($id, Request $request) {
$container = Container::find($id);
$rules = ['name' => 'max:255'];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json($validator->errors(), 422); //i'm not getting any
}
$container->update($validator->valid());
}
}
通过上述请求,我到达了$container->update。我想将该领域限制在我的规则中提到的领域。
【问题讨论】:
-
你试过什么?我最近注意到你提出了很多 Laravel 问题,这很好,但你需要展示你为解决问题所做的尝试,以及你遇到的错误。
-
例如,这可能就像循环
$request中的值一样简单,与已定义的已接受变量数组进行比较,如果遇到类似description(或更好声明,不是name)。 -
所以 很少 个问题是 很多 Laravel 问题 根据你:) 我修改了我的问题以包含我尝试过的内容。
-
@TimLewis,是的,我可以很容易地解决这个问题是一些低级循环,但框架的目的是使用已经制作的功能。将模型更新限制为预定义字段列表看起来任何人都会使用,所以我期待一个明显的开箱即用功能
-
我在过去 2 天内收到了 4 次您的邮件。与大多数用户相比,这 是 很多问题 :) 但我的意思不是消极的。无论如何,继续前进。是的,Laravel 是一个框架,但是串联使用自定义代码并没有错。是否有一个开箱即用的功能可以做到这一点?我不知道;可能是?那是你的问题吗?也可能,但不是我解释它的方式。
标签: php laravel validation