0

単一フィールドの検証

値が別のエンティティに既に存在するかどうかを確認することはできますか? そのため、ユーザー名が既に存在する場合、新しいユーザーはそのユーザー名を取得できません。doctrine 2 には、オブジェクトの存在または一意のオブジェクトをチェックするバリデーターがいくつかあります (ZF2 バリデーターがこれを使用できるかどうかわかりませんか?)。inputFilterユーザー名が重複しないようにするにはどうすればよいですか?現在、ユーザー名に次のinputFilterがあります。

$inputFilter->add($factory->createInput(array(
                'name' => 'username',
                'required' => true,
                'filters' => array(
                    array('name' => 'StripTags'),
                    array('name' => 'StringTrim'),
                ),
                'validators' => array( array(
                        'name' => 'StringLength',
                        'options' => array(
                            'encoding' => 'UTF-8',
                            'min' => 3,
                            'max' => 50,
                ),
            ),
        ),
 )));

このバリデーターを doctrine-validator で拡張して、ユーザー名が重複しているかどうかを確認することはできますか?

複数フィールドの検証

現在、何か問題が発生したかどうかを確認するために DBAlException をキャッチしていますが、この場合、重複したキーや一意の制約が無効であるなど、問題が発生したことを示すメッセージを返したいと考えています。それで、うまくいかなかったフィールドでのメッセージ。

try {
$this->getEntityManager()->flush();
            } catch (\Doctrine\DBAL\DBALException $e) {
                $this->flashMessenger()->addMessage('Duplicate key, please set another name for user.');
return array(
  'form' => $form,
'flashMessages' => $this->flashMessenger()->getCurrentMessages()
                );
}

DBAlException をキャッチすることにより、どの一意のキーが無効であるかを確認できなくなります。例: 次のカテゴリ エンティティがありますUnique Constraint -> uq_ParentId_Name。この制約が新しい (カテゴリ) エンティティに対して有効かどうかを確認するにはどうすればよいですか?

4

1 に答える 1

0

Zend\Validator\Db\NoRecordExists を確認してください。たとえば、会社名を一意にする必要があるとします。

new NoRecordExists( array(
    'adapter' => $serviceManager->get( 'Zend\Db\Adapter\Adapter' ),
    'table' => 'COMPANY',
    'field' => 'NAME',
    'message' => 'The company name already exists'
);

それを目的の入力に添付する必要があり、メッセージはそれに関連付けられます。

于 2013-04-11T11:54:53.727 に答える