2016-07-18 17 views
0

Ich versuche, eine benutzerdefinierte Fehlermeldung von meiner CustomForm.class.php, dass es in app/modul/modulename/lib, aber irgendwie bekomme ich einen anderen (vielleicht die Standardeinstellung von Base ??) ... es ist wie die ursprüngliche Nachricht Fehler nicht überschrieben ...Benutzerdefinierte Fehlermeldung nicht korrekt angezeigt

BaseClientForm.class.php

abstract class BaseClientForm extends BaseFormDoctrine 
{ 
    public function setup() 
    { 
    $this->setWidgets(array(
     'phonenumber'   => new sfWidgetFormInputText() 
    )); 

    $this->setValidators(array(

     'phonenumber'   => new sfValidatorString(array('max_length' => 20)) 
    )); 

    $this->widgetSchema->setNameFormat('client[%s]'); 

    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema); 

    $this->setupInheritance(); 

    parent::setup(); 
    } 

    public function getModelName() 
    { 
    return 'Client'; 
    } 

} 

In ClientForm.class.php werden können:

class ClientForm extends BaseClientForm { 

    public function configure() { 

     $this->validatorSchema['phonenumber'] = new sfValidatorAnd(array(new sfValidatorString(array('min_length' => 9, 'max_length' => 9, 'required' => true),array('min_length' => 'Mínimo 9 caracteres', 'max_length' => 'Máximo 9 caracteres', 'required' => 'Obligatorio')), new sfValidatorRegex(array('pattern' => '([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])','must_match' => true)))); 

    } 
} 

In meiner Vorlage:

<?php if($form['phonenumber']->hasError()): ?> 
<p class="error"><?php echo $form['phonenumber']->getError()->getMessage() ?></p> 
<?php endif ?> 

Ergebnis:

Required 

Warum es "erforderlich" nicht angezeigt, wenn ich es nur geändert habe zu "Obligatorio"? Irgendeine Lösung dafür?

+0

Die anderen definierten Validierungen (min_length, max_length) funktionieren ordnungsgemäß? – nikoskip

+0

Sie erscheinen so: "Minimo 9 caracteresRequired" –

Antwort

0

Also, das Debuggen des Rahmens Ich erkannte Sie die required Nachricht an Ihre sfValidatorAnd passieren müssen:

$this->validatorSchema['phonenumber'] = new sfValidatorAnd(array(
      new sfValidatorString(array('min_length' => 9, 'max_length' => 9), array('min_length' => 'Mínimo 9 caracteres', 'max_length' => 'Máximo 9 caracteres')), 
      new sfValidatorRegex(array('pattern' => '([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])','must_match' => true)) 
     ), array(), array('required' => 'My required message')); 

auch standardmäßig alle Felder sind required, also nicht notwendig ist ausdrücklich required ein Feld zu erklären.

+0

Funktioniert immer noch nicht ... Und die Nachricht, die in den anderen Validatoren erscheint, ist "Nachricht ungültig" (zB: "Minimo 9 caracteres Invalid"), nicht "Required "Wie ich schon sagte –

+0

Es funktionierte für mich, als ich es getestet habe. Erhalten Sie die ursprüngliche Nachricht mit meinem Code? – nikoskip

+0

Yup, es erhält immer "Ungültig" am Ende der benutzerdefinierten Nachricht :( –

Verwandte Themen