【发布时间】:2014-03-17 21:32:52
【问题描述】:
所以我有一个名为 Customer 的模型。 Customer 的 db 如下所示:
id、姓名、姓氏、个人、地址、邮编、位置、电话、电子邮件 updated_at、created_at
电子邮件和电话是特殊行,因为它们存储为 json 对象示例
['john@doe.com', 'some@othermail.com', 'more@mails.com']
我使用客户模型来存储这样的验证规则和自定义消息
<?php
class Customer extends BaseModel
{
public function validationRules()
{
return array(
'name' => 'required|max:255',
'lastName' =>'max:255',
'personal'=> 'integer',
'location' => 'max:255',
'address' => 'max:255',
'zip' => 'required|integer',
'phones' => 'betweenOrArray:8,10|required_without:emails',
'emails' => 'emailOrArray'
);
}
public function validationMessages()
{
// returns Validation Messages (its too much to write down)
}
}
OrArray 规则可在此处找到 https://stackoverflow.com/a/18163546/1430587
我像这样通过我的控制器调用它们
public function store()
{
$customer = new Customer;
$messages = $customer->validationMessages();
$rules = $customer->validationRules();
$input['name'] = Input::get('name');
$input['lastName'] = Input::get('lastName');
$input['personal'] = preg_replace("/[^0-9]/", "", Input::get('personal'));
$input['location'] = Input::get('location');
$input['address'] = Input::get('address');
$input['zip'] = Input::get('zip');
$input['emails'] = Input::get('emails');
$input['phones'] = Input::get('phones');
foreach($input['phones'] as $i => $value)
{
$input['phones'][$i] = preg_replace("/[^0-9]/", "", $value);
}
$validator = Validator::make($input, $rules, $messages);
}
这一切都很好,但我希望能够通过 PUT/PATCH 请求更新单行。 但是validationRules 在某些字段上是必需的,因此当它不存在时,我无法更新该单行。没有收到其他字段(我不发布的女巫)是必需的错误。
我将如何最好地解决这个问题?
【问题讨论】: