Trước hết: Chú thích là Kẻ giết tốc độ. Nếu bạn muốn sử dụng trình tạo chú thích, vui lòng LUÔN LẬP Cache các đối tượng đã tạo. Nhưng chú thích cũng là cách dễ nhất để có được một biểu mẫu đang chạy;)
Thứ hai: Hydrator. Khi sử dụng các biểu mẫu ZF2 kết hợp với Doctrine 2, rất có thể bạn muốn sử dụng DoctrineEntity Hydrator nằm bên trong. Xét đoạn mã sau:
$form = new ReferenzwertForm();
$form->setHydrator(new DoctrineEntity($serviceLocator->get('Doctrine\ORM\EntityManager')))
->setObject(new Referenzwert())
->setInputFilter(new ReferenzwertFilter())
->setAttribute('method', 'post');
return $form;
- ReferenzwertForm() là loại
Zend\Form\Form Object
- DoctrineEntity() là loại
DoctrineORMModule\Stdlib\Hydrator\DoctrineEntity
- DoctrineEntity cần EntityManager cung cấp. Bạn nên làm quen với điều này khi sử dụng Doctrine, 2 trong ZF2
- Referenzwert() là một Entity-Object
Khi không sử dụng các chú thích và bạn đang tham khảo khác Entity, thì chắc chắn rằng bạn sử dụng yếu tố hình thức thích hợp (trong hầu hết các trường hợp này sẽ là một yếu tố lựa chọn (như lựa chọn một CategoryEntity cho một BlogEntity hoặc một cái gì đó)
$this->add(array(
'name' => 'type',
'type' => 'DoctrineORMModule\Form\Element\DoctrineEntity',
'options' => array(
'label' => 'Choose a MyEntity',
'object_manager' => $this->getEntityManager(),
'target_class' => 'Namespace\Entity\MyEntity',
'property' => 'name'
),
'attributes' => array(
'required' => true
)
));
như bạn thấy, yếu tố biểu mẫu cần biết về EntityManager, quá. Đây lý do tại sao lý tưởng bạn muốn ext kết thúc Code-Example đầu tiên với một setter khác để inject entityManager vào đối tượng form của bạn.
$form->setEntityManager($serviceLocator->get('Doctrine\ORM\EntityManager'))
->set()//all the other stuff
Cách tiếp cận tốt nhất nói chung là gì? Tôi muốn nói không có gì. Vì mục đích tốc độ, chú thích chỉ là một kẻ giết người. Sử dụng các phiên bản được lưu trong bộ nhớ cache sẽ giúp ích, mặc dù tôi chưa có kinh nghiệm cá nhân về bộ nhớ đệm trong ZF2. Tôi muốn tạo biểu mẫu của mình từ tay bên ngoài chú thích, đơn giản vì IDE của tôi hỗ trợ rất nhiều nội dung, nhưng chắc chắn không tạo thành chú thích: D
Hy vọng điều này có thể giúp bạn một chút và tôi không viết quá nhiều ngữ cảnh: P
Câu trả lời hay, cảm ơn. Tôi có thể đúng khi cho rằng ví dụ mã của bạn với target_class etc có thể được chuyển thành Chú thích không?Tôi không cảm thấy như thể hiệu suất sẽ là một vấn đề lớn trong các lĩnh vực này và bộ nhớ đệm là một cái gì đó chúng ta có thể thực hiện nếu cần thiết. – Ben
Tôi đã không làm việc với chú thích cho đến nay, vì vậy tôi không thể cho bạn biết chính xác. Những gì tôi biết là phân tích cú pháp là một hiệu suất vẽ lớn, do đó tôi bước ra khỏi nó. Đó là đủ để tôi có các thực thể phân tích cú pháp rồi;) 'target_class' xác định thực thể được hiển thị và' property' là thuộc tính được hiển thị bên trong phần tử chọn – Sam
Tôi không cảm thấy như là hiệu suất đạt được là không đáng kể trên biểu mẫu. Bạn có một số bằng chứng về điều này? Nếu không, mẫu mã của bạn hoạt động tốt. Cảm ơn vì sự giúp đỡ. – Ben