0

有没有人能够成功地使用带有 Idiorm 结果对象的 Respect Validation 库?似乎尊重验证仅适用于香草,不确定这是否是正确的术语,对象。Idiorm 结果对象允许您使用 $user->name 访问属性,但是当您 var_dump 对象时,它显然只是映射为像具有属性的对象一样工作,但实际上并不是一个直接对象。

摘自下面的转储

object(ORM)[47]
  protected '_data' => 
    array (size=9)
      'id' => string '100000' (length=6)
      'name' => string 'test' (length=4)

下面的代码总是失败,因为 Respect Validation 无法通过引用访问属性。有没有解决的办法?最好按原样使用对象,而不必将它们转换为数组。

$user= ORM::for_table('user')->find_one(5);

$userValidator = v::attribute('name', v::string()->length(1,32));

$userValidator->validate($user);
4

1 回答 1

0

对象实际上没有属性name。这可能是通过不支持使用属性验证的魔术方法提供的(因为魔术方法不是属性)。

但是,您可以做的是在另一个_data属性验证器中使用此验证器:


$user = ORM::for_table('user')->find_one(5);
$userDataValidator = v::arr()
                      ->key('name', v::string()->length(1,32));
$userObjectValidator = v::instance('ORM')
                        ->attribute('_data', $userDataValidator);
$userObjectValidator->validate($user);

让我知道这是否有效,我还没有测试过。有些规则的名称可能不正确......但我想你可以知道我想要什么。

于 2013-11-21T00:15:59.443 回答