示例#1
0
 /**
  * Makes this mapping to an ignored field.
  *
  * @param Mapping $mapping The mapping object
  * @param mixed   $value   The value
  *
  * @return Mapping
  */
 public function ignored(Mapping $mapping, $value)
 {
     $emitter = $mapping->getEmitter();
     $emitter->on(Events::APPLIED, function (Data $data) use($value) {
         $data->setErrors([]);
         $data->setResult($value);
     });
     return $mapping;
 }
示例#2
0
 /**
  * Enables object validation.
  *
  * @param Mapping $mapping The mapping object
  *
  * @return Mapping
  */
 public function enableObjectValidation(Mapping $mapping)
 {
     $emitter = $mapping->getEmitter();
     $emitter->on(Events::APPLIED, function (Data $data) {
         $vios = $this->validator->validate($data->getResult());
         foreach ($vios as $vio) {
             $propertyPath = new PropertyPath($vio->getPropertyPath());
             $data->addError(new Error($vio->getMessage(), $propertyPath->getElements()));
         }
     });
     return $mapping;
 }
示例#3
0
 /**
  * Adds a transformer.
  *
  * @param Mapping     $mapping     The mapping object
  * @param Transformer $transformer The transformer
  *
  * @return Mapping
  */
 public function transform(Mapping $mapping, Transformer $transformer)
 {
     $emitter = $mapping->getEmitter();
     $emitter->on(Events::APPLIED, function (Data $data) use($transformer) {
         if (count($data->getErrors()) > 0) {
             return;
         }
         $data->setResult($transformer->transform($data->getResult()));
     });
     $emitter->on(Events::UNAPPLY, function (Data $data) use($transformer) {
         $data->setInput($transformer->reverseTransform($data->getInput()));
     });
     return $mapping;
 }
示例#4
0
 /**
  * Adds a constraint.
  *
  * @param Mapping    $mapping    The mapping object
  * @param Constraint $constraint The constaint object
  *
  * @return Mapping
  */
 public function validate(Mapping $mapping, Constraint $cons)
 {
     $emitter = $mapping->getEmitter();
     $emitter->on(Events::APPLIED, function (Data $data) use($cons) {
         if (count($data->getErrors()) > 0) {
             return;
         }
         if (false === $cons->check($data->getResult())) {
             $error = new Error($cons->getMessage(), $data->getPropertyPath());
             $data->addError($error);
         }
     });
     return $mapping;
 }
示例#5
0
 /**
  * Makes this mapping optional.
  *
  * @param Mapping $mapping The mapping object
  *
  * @return Mapping
  */
 public function optional(Mapping $mapping)
 {
     $emitter = $mapping->getEmitter();
     $emitter->on(Events::APPLIED, function (Data $data) {
         if (0 === count($data->getErrors())) {
             return;
         }
         foreach ($data->getErrors() as $error) {
             if ('error.required' === $error->getMessage()) {
                 $data->removeError($error);
             }
         }
     });
     return $mapping;
 }
示例#6
0
文件: Forms.php 项目: dennis84/mapped
 /**
  * Returns a form.
  *
  * @param Mapping $mapping The mapping object
  *
  * @return Form
  */
 public function form(Mapping $mapping, $path = [])
 {
     $children = [];
     foreach ($mapping->getChildren() as $name => $child) {
         $children[$name] = $child->form(array_merge($path, [$name]));
     }
     $form = new Form($mapping, $children, $path);
     $emitter = $mapping->getEmitter();
     $emitter->on(Events::APPLIED, function (Data $data) use($form) {
         $form->setData($data->getResult());
         $form->setValue($data->getInput());
         $form->setErrors($data->getErrors());
     });
     $emitter->on(Events::UNAPPLIED, function (Data $data) use($form) {
         $form->setValue($data->getResult());
     });
     return $form;
 }