Symfony2 または doctrine2 でアノテーションを介して要求する方法はありますか? フィールド A に入力した場合、フィールド B も指定する必要がありますか?
私の場合、ユーザーはスケジュールしたい cron ジョブのタイプを指定できます。タイプが odbc の場合、少なくとも 1 つの db テーブルを選択する必要があります。他のタイプの cron ジョブである場合、テーブルの選択は必要ありません (意味さえありません)。
Symfony2 または doctrine2 でアノテーションを介して要求する方法はありますか? フィールド A に入力した場合、フィールド B も指定する必要がありますか?
私の場合、ユーザーはスケジュールしたい cron ジョブのタイプを指定できます。タイプが odbc の場合、少なくとも 1 つの db テーブルを選択する必要があります。他のタイプの cron ジョブである場合、テーブルの選択は必要ありません (意味さえありません)。
エンティティデータを検証するコールバック関数を指すアノテーションでアサート/コールバックを設定できます。
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);
}
}
}