Czy możliwe jest ujawnienie Symfony2 reguł walidacji (dla danego Podmiotu)? Nie mogę znaleźć niczego takiego. Próbuję wykonać walidację po stronie klienta (używając backbone.js) z podejściem DRY. Pomoże mu coś takiego jak pakiet lub jakaś wskazówka.Udostępnianie reguł sprawdzania poprawności Symfony2 za pomocą backbone.js lub javascript?
Here is weryfikator komponentów. Jedna możliwość to:
Definiowanie reguł sprawdzania poprawności po stronie serwera przy użyciu standardowego sposobu Symfony2. Przykład (YAML, podjęte z ich strony internetowej):
# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\Author:
properties:
name:
- NotBlank: ~
Producent /author/rules
zwrócić obiekt JSON, który mapuje pola z jednostki do „skompilowany” wyrażenia regularnego. Nie jestem tego pewien, ale myślę, że wewnętrznie Symfony2 kompiluje reguły validation.yml
w wyrażenia regularne.
Zakładając podmiot autorski wykonany name
polu NotBlank
(zauważ, że nie jestem mistrzem w regex, to skopiuj i wklej z innej kwestii):
{ 'name' : '^\s*\S' }
Wreszcie pobrać ten obiekt JSON i zrobić Sprawdzanie poprawności po stronie klienta za pomocą systemu backbone.js. Być może buforowanie. Na przykład (ostrzeżenie pseudo-kod podobny kod wewnątrz validate()
!):
<script>
$(function() {
window.MyApp = window.MyApp || { Models : {}, Views : {}, Router : {} };
window.MyApp.Models.Author = Backbone.Models.extend({
initialize : function() { _.bindAll(this, 'validate') },
validator : $.get('/author/rules');
validate: function(attrs) {
// Loop each property of this model
_.each(attrs, function(field, value) {
// Get the regex from the validatior
var rule = this.validator[field];
var regex = new RegExp(rule);
if(!regex.test(value)) return "Model not valid.";
}
}
});
});
</script>
Am I z prośbą o Księżycu?
Może coś knujesz! Domyślam się, że nie ma sposobu, aby to zrobić teraz, ale może być sposób, aby przekształcić to w pakiet! Sugerowałbym nie używać ajax w tym przypadku, po prostu dlatego, że ładowanie reguł sprawdzania poprawności za każdym razem jest ogromnym obciążeniem. Ale co z eksportowaniem reguł z pliku yml do pliku javascript, który definiuje różne wyrażenie regularne, dzięki czemu można z nich korzystać za pomocą skryptu backbone.js (lub dowolnego kodu javascript, który chciałbyś)? – Sgoettschkes
@Boo dzięki za komentarz. Niestety nie jestem tak dobry w Symfony2, aby pakiet był dobrze znany.I myślę, że eksportowanie reguł z yaml do javascript (a następnie pisanie reguł javascript - znowu) jest przesadzone - powinien istnieć jakiś sposób na uzyskanie "skompilowanych" reguł bezpośrednio z Symfony2. – gremo
Cóż, jeśli zamierzasz używać ajax, możesz również po prostu sprawdzić poprawność obiektu w symfony i zwrócić wynik sprawdzania poprawności za pomocą wiadomości zwrotnej ajax. Jeśli więc chcesz sprawdzić nazwę autora, wysyłasz żądanie do/author/validate z nazwą użytkownika, kontroler sprawdza poprawność za pomocą sprawdzania poprawności symfony i zwraca, jeśli sprawdzanie poprawności powiodło się. W zależności od tego wyświetlane są komunikaty o błędach. – Sgoettschkes