为什么在ID字段的模型中使用空白验证器规则? CakePHP的

时间:2014-11-04 21:55:28

标签: validation cakephp model

我是新蛋糕,我只是想了解这背后的逻辑。我知道空白规则用于确保字段留空或者空白字符存在于其中,但是我们是否总是希望我们的ID等于某个数值?

2 个答案:

答案 0 :(得分:2)

当用户提交用于在数据库中创建新条目的数据时,您不希望让他们选择ID。当id字段为空时,数据库(或模型)将自动生成新的id。

通常规则与'on' => 'create'一起使用:

'id' => array(
    'rule' => 'blank',
    'on' => 'create'
)

...这基本上意味着“在创建时,不接受来自用户的id”。如果没有此规则,用户可以选择数据库ID或传递现有数据并覆盖数据。

答案 1 :(得分:0)

你必须从这里看到:http://book.cakephp.org/2.0/en/models/data-validation.html#Validation::blank

有很多情况可能会很方便。

  1. 让我们说在您的视图中,您有一个用于添加新记录的表单。即使您的表单中没有id字段,恶意用户也可以将其余数据与id一起提交。如果您提交了包含数据的ID,那么当您在控制器中执行以下操作时
  2. $this->MyController->save($this->request->data)

    如果存在具有id的记录,Cake将更新现有记录。

    1. 您的数据库中可能有自动增量,因此您不希望提交ID,因为数据库会处理ID编号。
    2. 也许有更多的案例不会被考虑在内。