Tôi muốn tạo trình xác thực tương tự như cách GitHub xử lý việc xóa kho. Để xác nhận xóa, tôi cần nhập tên repo. Ở đây tôi muốn xác nhận xóa bằng cách nhập thuộc tính thực thể "name". Tôi sẽ cần phải chuyển tên cho ràng buộc hoặc truy cập vào một cách nào đó, làm cách nào để làm điều đó?Trình xác thực/Ràng buộc tùy chỉnh với các đối số/tham số trong Symfony 2
5
A
Trả lời
2
bạn thực sự có thể sử dụng một hạn chế validator để làm điều đó:
1: Tạo một hình thức xóa (directy hoặc sử dụng một loại):
return $this->createFormBuilder($objectToDelete)
->add('comparisonName', 'text')
->setAttribute('validation_groups', array('delete'))
->getForm()
;
2: Thêm một tài sản công cộng comparisonName
vào thực thể của bạn. (hoặc sử dụng một đối tượng proxy), sẽ được ánh xạ tới trường biểu mẫu tương ứng ở trên.
3: Xác định một hạn mức lớp, gọi lại validator để so sánh cả hai giá trị:
/**
* @Assert\Callback(methods={"isComparisonNameValid"}, groups={"delete"})
*/
class Entity
{
public $comparisonName;
public $name;
public function isComparisonNameValid(ExecutionContext $context)
{
if ($this->name !== $this->comparisonName) {
$propertyPath = $context->getPropertyPath() . '.comparisonName';
$context->addViolationAtPath(
$propertyPath,
'Invalid delete name', array(), null
);
}
}
}
4: Hiển thị hình thức của bạn theo quan điểm của bạn:
<form action="{{ path('entity_delete', {'id': entity.id }) }}">
{{ form_rest(deleteForm) }}
<input type="hidden" name="_method value="DELETE" />
<input type="submit" value="delete" />
</form>
5: Để xác minh rằng truy vấn xóa hợp lệ, hãy sử dụng truy vấn này trong trình điều khiển của bạn:
$form = $this->createDeleteForm($object);
$request = $this->getRequest();
$form->bindRequest($request);
if ($form->isValid()) {
$this->removeObject($object);
$this->getSession()->setFlash('success',
$this->getDeleteFlashMessage($object)
);
}
return $this->redirect($this->getListRoute());
Các vấn đề liên quan
- 1. Symfony 2 trình xác thực duy nhất
- 2. EventHandler với các đối số tùy chỉnh
- 3. Xác nhận các trường bằng nhau trong Symfony 2
- 4. Các mẫu tùy chỉnh với phpDocumentor 2
- 5. Có kho lưu trữ tùy chỉnh không được liên kết với một thực thể trong Symfony 2/Doctrine 2?
- 6. Kết nối Doctrine 2 với MSSQL Đối với SYMFONY 2 Trên Linux
- 7. Định tuyến i18n tùy chỉnh trong Symfony
- 8. Sự kiện C# với các đối số tùy chỉnh
- 9. Symfony 2: Thêm phần tử biểu mẫu tùy chỉnh, không phải trong một thực thể
- 10. Trong Apps Script, Cách bao gồm các đối số tùy chọn trong các hàm tùy chỉnh
- 11. Sử dụng Symfony 1.4 bảng sfGuardUser với Symfony 2 SecurityBundle?
- 12. symfony 2 tương đương với hàm url_for() trong symfony 1
- 13. Trình kết hợp tùy chỉnh RSpec và nhiều đối số
- 14. Symfony 2 + Doctrine 2 + inheritance
- 15. So sánh 2 đối tượng tùy chỉnh - C#
- 16. Lắng nghe tất cả các sự kiện trong Symfony 2
- 17. Biến kết xuất/đối tượng khá trong Symfony 2. *?
- 18. Ràng buộc xác thực không phô trương với ràng buộc KnockoutJS tùy chỉnh
- 19. Lệnh Symfony 2 Console để tạo cơ sở dữ liệu tùy chỉnh
- 20. Lớp ràng buộc tùy chỉnh không hoạt động chính xác
- 21. Cách Symfonian để lưu trữ các tiện ích và người trợ giúp tùy chỉnh trong symfony 2
- 22. AngularJS Chỉ thị Tùy chỉnh Đối số với Không gian
- 23. Đối số dòng lệnh tùy chỉnh Emacs
- 24. Symfony 2 - Làm việc với các tài sản
- 25. Kiểm tra đơn vị kiểm tra ràng buộc tùy chỉnh trong Symfony 2.1 nhưng không truy cập vào vùng chứa?
- 26. symfony 2 đường dẫn lesscss
- 27. Xác định các giai đoạn vòng đời tùy chỉnh trong Maven 2
- 28. Spring MVC tùy chỉnh tham số phương pháp ràng buộc
- 29. Kiểm tra xác thực thủ công Symfony 2
- 30. xác thực đơn vị thử nghiệm symfony2 với trình xác thực tùy chỉnh