たぶん、あなたはこのようにConstraintViolationsEventを作成することができます。そして、あなたは、このイベントのリスナーを作成することができ、そしてこのリスナーの内側に、あなたがたすべての違反に基づいて例外を作成
namespace AppBundle\Event;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\Validator\ConstraintViolationListInterface;
/**
* The order.placed event is dispatched each time an order is created
* in the system.
*/
class ConstraintViolationsEvent extends Event
{
const VIOLATIONS_DETECTED = 'constraint_violations.detected';
protected $constraintViolationList;
public function __construct(ConstraintViolationListInterface $constraintViolationList)
{
$this->constraintViolationList = $constraintViolationList;
}
public function getConstraintViolationList()
{
return $this->constraintViolationList;
}
}
。あなたが違反を見つけるたびに、ちょうどこのようなあなたのコントローラ内のあなたのイベントをディスパッチ:
class MyController extends Controller
{
public function myFormAction(Request $request)
{
/** handle the request, get the form data, validate the form...etc. **/
$event = new ConstraintViolationsEvent($constraintViolationList);
$dispatcher->dispatch(ConstraintViolationsEvent::VIOLATIONS_DETECTED, $event);
}
}
は、実際には、あなたがサービス中にあなたの例外の作成を管理し、リスナーでサービスを呼び出すことができます。それはあなた次第です。
質問はちょうどカスタム例外を作成するに関連するか、正しく違反を検出した後にスローされた例外を処理する方法に関連していましたの? @Sergey –