반응형
Symfony 2 양식 요소에 오류 추가
컨트롤러에서 일부 유효성 검사를 확인합니다. 그리고 실패시 내 양식의 특정 요소에 오류를 추가하고 싶습니다. 내 양식 :
use Symfony\Component\Form\FormError;
// ...
$config = new Config();
$form = $this->createFormBuilder($config)
->add('googleMapKey', 'text', array('label' => 'Google Map key'))
->add('locationRadius', 'text', array('label' => 'Location radius (km)'))
->getForm();
// ...
$form->addError(new FormError('error message'));
addError () 메서드는 요소가 아닌 양식에 오류를 추가합니다. locationRadius 요소에 오류를 추가하려면 어떻게해야합니까?
넌 할 수있어
$form->get('locationRadius')->addError(new FormError('error message'));
양식 요소도 FormInterface
유형입니다.
좋아요 여러분, 다른 방법이 있습니다. 더 복잡하고 특정 경우에만 해당됩니다.
내 경우:
양식이 있고 제출 후 API 서버에 데이터를 게시합니다. 그리고 API 서버에서도 오류가 발생했습니다.
API 서버 오류 형식은 다음과 같습니다.
array(
'message' => 'Invalid postal code',
'propertyPath' => 'businessAdress.postalCode',
)
내 목표는 유연한 솔루션을 얻는 것입니다. 해당 필드에 대한 오류를 설정할 수 있습니다.
$vm = new ViolationMapper();
// Format should be: children[businessAddress].children[postalCode]
$error['propertyPath'] = 'children['. str_replace('.', '].children[', $error['propertyPath']) .']';
// Convert error to violation.
$constraint = new ConstraintViolation(
$error['message'], $error['message'], array(), '', $error['propertyPath'], null
);
$vm->mapViolation($constraint, $form);
그게 다야!
노트! addError()
메소드는 error_mapping 옵션을 우회합니다 .
내 양식 (회사 양식에 포함 된 주소 양식) :
회사
<?php
namespace Acme\DemoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints;
class Company extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('companyName', 'text',
array(
'label' => 'Company name',
'constraints' => array(
new Constraints\NotBlank()
),
)
)
->add('businessAddress', new Address(),
array(
'label' => 'Business address',
)
)
->add('update', 'submit', array(
'label' => 'Update',
)
)
;
}
public function getName()
{
return null;
}
}
주소
<?php
namespace Acme\DemoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints;
class Address extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// ...
->add('postalCode', 'text',
array(
'label' => 'Postal code',
'constraints' => array(
new Constraints\NotBlank()
),
)
)
->add('town', 'text',
array(
'label' => 'Town',
'constraints' => array(
new Constraints\NotBlank()
),
)
)
->add('country', 'choice',
array(
'label' => 'Country',
'choices' => $this->getCountries(),
'empty_value' => 'Select...',
'constraints' => array(
new Constraints\NotBlank()
),
)
)
;
}
public function getName()
{
return null;
}
}
참고 URL : https://stackoverflow.com/questions/12419551/add-error-to-symfony-2-form-element
반응형
'Development Tip' 카테고리의 다른 글
ReferenceError를 던지는 Gulp-autoprefixer : Promise가 정의되지 않았습니다. (0) | 2020.10.04 |
---|---|
Node.js에서 path.normalize와 path.resolve의 차이점 (0) | 2020.10.04 |
405 메서드가 허용되지 않는 웹 API (0) | 2020.10.04 |
내부 클래스의 공용 대 내부 메서드 (0) | 2020.10.04 |
컬로 줄 바꿈을 보내는 방법은 무엇입니까? (0) | 2020.10.04 |