Walidacja formularza - otrzymuję etykiety dwa razy
Mam formularz rejestracyjny - z FOSUserBundle jest to w szablonie:
{% form_theme form 'AcmeMyBundle:Form:errors.html.twig' %}
<form class="big-spacer" action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
{{ form_widget(form) }}
<div>
<input class="btn little-spacer" type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
</div>
</form>
Tutaj jesterrors.html.twig
:
{% block field_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<ul class="little-spacer nav text-error">
{% for error in errors %}
<li>{{loop.index}}. {{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li>
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}
{% endblock field_errors %}
Właśnie dodałem kilka klas css z TwitterBootstrap.
Problem polega na tym, że dwukrotnie otrzymuję komunikaty do sprawdzenia poprawności.
Mój formularz ma 4 pola -Nazwa użytkownika, adres e-mail, hasło, Potwierdź hasło
Próbowałem złamać tyle reguł sprawdzania poprawności, ile mogę i oto wyjście:
DlaUsername
:
Dlaemail
:
a jeśli wprowadzę już używany e-mail, błąd jest wyświetlany tylko raz:
Ten email jest już używany.I dlapasswords
:
Jeśli są krótkie:
Hasło jest za krótkie - wpisz co najmniej 6 symboli.Hasło jest za krótkie - wpisz co najmniej 6 symboli.A jeśli się nie zgadzają:
Wprowadzone hasła nie pasują.Inną dziwną rzeczą jest to, że po ponownym przesłaniu formularza, ale nadal jest on nieprawidłowy, powiadomienie o długości hasła jest tylko jedno:
Hasło jest za krótkie - wpisz co najmniej 6 symboli.i przed ponownym przesłaniem były dwa.
Czy masz jakieś pomysły, dlaczego niektóre błędy są wyświetlane dwukrotnie i jak to naprawić? Z góry bardzo dziękuję! :)
AKTUALIZACJA
To jestC:\xampp\htdocs\Project\src\Acme\MyBundle\Entity\User.php
namespace Acme\MyBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
I wC:\xampp\htdocs\Project\app\Resources\FOSUserBundle\translations\
Skopiowałem plikvalidators.en.yml
a w nim i usunął[-Inf, Inf]
część i trochę zmieniłem wiadomości.
Nadpisałem również plik sprawdzania poprawności - skopiowałem go tutaj:
C:\xampp\htdocs\Project\src\Acme\MyBundle\Resources\config\validation.xml
Zmieniłem tylko minimalną długość hasła. Wszystko inne jest takie samo jak w oryginalnym pliku.
Mój pakiet rozszerza FOSUserBundle:
C:\xampp\htdocs\Project\src\Acme\MyBundle\AcmeMyBundle.php
ten plik zawiera następujące elementy:
<?php
namespace Acme\BudgetTrackerBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeBudgetTrackerBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}