読者です 読者をやめる 読者になる 読者になる

たなちの開発日誌

プログラミングのメモを中心に気になったことを書いていきます。

【CakePHP3】 validationでのnotEmptyとrequirePresenceの違い

Cookbookのバリデーションから必要な部分を抜粋。
下記のサイトも参考になった。
バリデーションをマスターする(2/6):初心者のためのCakePHP3 プログラミング入門


requirePresence

バリデーションの対象配列について、 フィールドが実在することをチェックする。
モードはtrue, false , create, updateの4つ。デフォルトはtrue。nullは存在する扱い。

キーの存在は、 array_key_exists() を用いることによりチェックされるため、 null 値は、「存在する」としてカウントされます。モードにについては、2番目のパラメーターを用いることにより設定できます。

  • true:フィールドが存在することが常に求められる。
  • false:フィールドが存在することは必要なくなる。
  • create:create実行時にフィールドが存在することが求められる。
  • update:update実行時にフィールドが存在することが求められる。

使い方

<?php
$validator->requirePresence('author_id', 'create');

notEmpty

フィールドが空欄であったときに無効とする。 空欄を認める場合は、allowEmpty()を使う。
モードはfalse , create, updateの3つ。

  • false:フィールドが空欄であることを認めない。
  • create:create実行時にフィールドが空欄であることを認めない。
  • update:update実行時にフィールドが空欄であることを認めない。

'' や、 null 、そして [] といった値(空の配列)は認められない。

使い方

<?php
$validator->allowEmpty('published')
    ->notEmpty('title', 'A title is required')
    ->notEmpty('body', 'A body is required', 'create')
    ->allowEmpty('header_image', 'update');

まとめ

フィールドが実在するか、空欄かの違い。