CakePHP3のI18Nフィールドの検証にいくつかの困難があります。ここでの宣伝のように CakePHP 3での翻訳されたエンティティの検証
$this->addBehavior('Translate', [
'fields' => ['name', 'body', 'slug'],
'validator' => 'default'
]);
:
変換動作は、このような設定であるhttps://book.cakephp.org/3.0/en/orm/behaviors/translate.html#validating-translated-entities
コアの検証が正常に動作しています。私は、名前が空ではないとそれが正常に動作するかどうかをチェックするvalidationDefault関数の検証ルールを持っています。しかし、私はまた、このバリデーションの上にいくつかのアプリケーションルールを追加したいと思います。 「名前」フィールドには一意の値が必要です。私は、同じ翻訳された名前を持つ複数のエンティティを許可したくありません。
このコードは明らかに機能しません。 CakePHPのドキュメントはまた、この問題について非常に静かです。
public function buildRules(RulesChecker $rules) {
// prevent duplicate creation
$rules->add($rules->isUnique(['name']));
return $rules;
}
これは実際に可能ですか? ありがとう
こんにちはあなたは$バリデータのルールでこれを追加しました---> - > [ 'ルール'、 'ユニーク'、 '名前'(追加=> 'validateUnique'、 'provider' => 'table']); after-> notEmpty( 'name') – Gransfall
次の2行を試しました。 1. $ validator-> add( 'name'、 'unique'、['rule' => 'validateUnique'、 'provider' => 'table']); =>不明な列のSQLエラーを返す 2。$ validator-> add($ this-> translationField( 'name')、 'unique'、['rule' => 'validateUnique'、 'provider' => 'table']); =>ちょうどそれが保存されているので妥当性は確認されていません – Laurent
私は新鮮なインストール(3. 5)でユニークなフィールドに問題はなく、唯一の違いはその行になる可能性があるので尋ねます。 :/ – Gransfall