1

Symfony2 または doctrine2 でアノテーションを介して要求する方法はありますか? フィールド A に入力した場合、フィールド B も指定する必要がありますか?

私の場合、ユーザーはスケジュールしたい cron ジョブのタイプを指定できます。タイプが odbc の場合、少なくとも 1 つの db テーブルを選択する必要があります。他のタイプの cron ジョブである場合、テーブルの選択は必要ありません (意味さえありません)。

4

1 に答える 1

2

エンティティデータを検証するコールバック関数を指すアノテーションでアサート/コールバックを設定できます。

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\ExecutionContext;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * ...
 * @Assert\Callback(methods={"validateDB"})
 */
class Item
{
    protected $type;
    protected $table; 

    public function validateDB(ExecutionContext $context)
    {
        $path = $context->getPropertyPath();
        if ($this->type == 'odbc' and empty($this->table)) {
            // ".type" is the property name where you want the error to appear
            // in the form.
            $context->setPropertyPath($path . '.type'); 
            $context->addViolation("ODBC table must be specified.", array(), null);
        }
    }
}
于 2013-01-07T11:38:52.803 に答える