Tôi đã có một hình thức mà không được kết nối với một thực thể nhưng không có những hạn chế như đã đề cập ở đây: http://symfony.com/doc/current/book/forms.html#adding-validationSymfony2 Đơn vị kiểm tra Forms với các ràng buộc
ContactBundle \ thử nghiệm \ Mẫu \ Loại \ TestedTypeTest :: testSubmitValidData Symfony \ Component \ OptionsResolver \ Exception \ InvalidOptionsException: Tùy chọn "ràng buộc" không tồn tại. Các tùy chọn đã biết là: "hành động", "attr", "auto_initialize", "block_name", "by_reference", "hợp chất", "dữ liệu", "data_class", "bị tắt", "empty_data", "error_bubbling", "inherit_data "," label "," label_attr "," ánh xạ "," max_length "," phương thức "," mẫu "," post_max_size_message "," property_path "," read_only "," required "," translation_domain "," trim ", "ảo"
Dưới đây là một phần của các hình thức:
class ContactType extends AbstractType
{
/**
* Build the form
* @param \Symfony\Component\Form\FormBuilderInterface $builder BuilderInterface
* @param array $aOption Array of options
*/
public function buildForm(FormBuilderInterface $builder, array $aOption)
{
///..
$builder->add('name', 'text', array(
'constraints' => array(
new NotBlank(),
new Length(array('min' => 3)),
),
))
->add('address', 'textarea', array(
'required' => false
))
//..
;
//..
đây là bài kiểm tra đơn vị
class TestedTypeTest extends TypeTestCase
{
public function testSubmitValidData()
{
$formData = array(
'name' => 'Test Name',
'address' => '',
);
$type = new ContactType();
$form = $this->factory->create($type, $formData);
$form->submit($formData);
$this->assertTrue($form->isSynchronized());
$view = $form->createView();
$children = $view->children;
foreach (array_keys($formData) as $key) {
$this->assertArrayHasKey($key, $children);
}
}
}
Tôi đoán rằng đây là vấn đề với bài kiểm tra thay vì biểu mẫu dưới dạng biểu mẫu hoạt động như mong đợi. Tôi không chắc mình nên thay đổi điều gì. Bất kỳ giúp đỡ hoặc tư vấn sẽ được thuận tiện
Cảm ơn
Vâng tôi đã thử rằng: $ type = new ContactType(); $ form = $ this-> factory-> create ($ type); nhưng nó vẫn là vấn đề tương tự. Theo tài liệu, tham số thứ hai của việc tạo có thể là một đối tượng, mảng hoặc không có gì. tạo ra hàm public ($ type = 'form', $ data = null, mảng $ options = array()); Tài liệu Api cho FormFactoryInterface: http://api.symfony.com/2.3/Symfony/Component/Form/FormFactoryInterface.html – pfwd
Dòng nào gây ra sự thực thi? (Và các đối số khác của create() cuối cùng cũng được chuyển thành tham số thứ hai trong FormForm của bạn (FormBuilderInterface $ builder, array $ aOption)) – Rob
Từ stack trace: symfony/symfony/src/Symfony/Component/OptionsResolver/OptionsResolver.php : 255 symfony/symfony/src/Symfony/Component/OptionsResolver/OptionsResolver.php: 219 symfony/symfony/src/Symfony/Component/Form/ResolvedFormType.php: 109 symfony/symfony/src/Symfony/Thành phần/Biểu mẫu /FormFactory.php:87 symfony/symfony/src/Symfony/Component/Form/FormBuilder.php: 106 symfony/symfony/src/Symfony/Component/Form/FormBuilder.php: 268 symfony/symfony/src/Symfony /Component/Form/FormBuilder.php:216 symfony/symfony/src/Symfony/Component/Form/FormFactory.php: 39 /Kiểm tra s/Form/Type/ContactTypeTest.php: 34 – pfwd