2017-11-16 1 views
0

seit Stunden versuche ich, um herauszufinden, was das Problem hier sein könnte:Yü 1.1: Formulare -> definieren richtige Mindest Regel

-> Ich habe ein Yü-Formular wie folgt aussieht:

<?php $form=$this->beginWidget('CActiveForm', array(
         'id'=>'withdrawal-request-form', 
         'enableAjaxValidation'=>true, 
        )); ?> 
... 
... 
... 

$form->textField($model,'amount', array(
      'class' => 'form-control name-field', 
      'placeholder' => $model->getAttributeLabel('Amount'), 
      'type' => 'number', 
      'min' => 10)); 

dann so habe ich meinen Controller Regeln definiert:

public function rules() 
{ 
    return array(
     // username and password are required 
     array('IBAN, BIC, amount, payment_id, email', 'required'), 
     array('payment_id', 'numerical', 'integerOnly'=>true), 
     array('email', 'email'), 
     array('amount', 'numerical', 'min'=>10) 
    ); 
} 

Mein Ziel Werte nicht zulassen weniger als '10'

**, was ich bereits versucht haben **

  • Das wirklich Seltsame ist, alle anderen Regeln, wie ‚erforderlich‘ und falsche E-Mail-Feld ohne @ Brief usw. funktioniert wirklich wirklich groß, so dass die Verbindung zwischen dem Form und die Regeln funktionieren super. Dieser Test war erfolgreich

  • Wenn ich versuche, einen Brief z. ein "A" in meinem Betrag Feld, ich bin imediatley eine rote HTML5 Fehler zurück (perfekt, funktioniert auch gut)

  • aber wenn ich versuche, eine Nummer weniger als 10 für Beispiel 1 eingeben -> dann bin ich keinen Fehler zurück bekommen (erste seltsame Sache) und das nächste große Problem ist, nach dem submit, ich bekomme nur eine leere weiße Seite zurück :(

  • Ich habe auch das hier "enableClientValidation '=> true" zu meinem hinzugefügt Formularcode (auch kein Erfolg)

  • und dann habe ich auch versucht, einige Validierungsregeln direkt in das yii Formularelement wie dieses hier zu implementieren:

    $ form-> Textfield ($ Modell 'Betrag', array ( 'Klasse' => 'Form-Steuer name-Feld', 'Platzhalter' => $ Profis-> getAttributeLabel ('Betrag') , 'type' => 'Anzahl', 'min' => '10'

-> auch kein Erfolg!

die verrückte Sache ist, wenn ich meine

entfernen
array('amount', 'numerical', 'min'=>10) 

Regel aus meinen Regeln blockieren, legen die ein Redirect-Prozess funktioniert super! aber dann habe ich weniger als 10 da die "min = 10 rule" entfernt wurde. ABER

, wenn ich diese Zeile hinzufügen, wieder hier in meinem Regeln

array('amount', 'numerical', 'min'=>10) 

und dann bin ich „1“ in das Betragsfeld eingeben und dann das Formular abschicken, yii nur die Anzeige einer weißen Seite!

so yii erkennt, dass ich einen falschen Wert eingegeben haben, sondern nur eine weiße Seite

  • JA zeigt, ich habe bereits versucht, die Protokolldatei zu überprüfen. kein neuer Eintrag !!
  • JA, haben das Lesen ich auch das Handbuch, aber ich folgte genau die Schritte und die Art und Weise einige neue Regeln zu setzen ...

ich keine Ahnung, wirklich haben, was das Problem :(

sein könnte

Könnten Sie mir vielleicht geben irgendeinen Hinweis

Vielen Dank für jede Hilfe

Edit:?!?! ok ich habe herausgefunden, dass das Problem ist, dass in meinem Controller meines $ modell-> gültig ate() ist nicht wahr, und deshalb wird das ganze Skript übersprungen ... ich werde alles nochmal überprüfen und hier bald eine Rückmeldung geben.

Antwort

0

oh mein Gott :)

Ich habe meinen Fehler gefunden!

die Sache ist, meine Regeln/Validierung Teil funktionierte perfekt die ganze Zeit! Die weiße Seite Nocken beacuse nur in meinem Controller da war und wenn der Block wie folgt definiert:

if(validation){ 
    // do great stuff 
} 

aber es gab keine Validierung Teil definiert, deshalb nach unvalid Werten einreichen, ich nur eine leere weiße leere Seite angezeigt;)

Also wenn jemand ein ähnliches Problem in der Zukunft haben wird!

Überprüfen Sie Ihre Controller, wenn Sie 2 Fälle

Erfolgsfall definiert haben (Validierung Teil ist ok) Fehlerfall (Validierung Teil ungültig ist)

dann können Sie auf die gleiche Seite umleiten und lassen Sie die Benutzer wissen so etwas wie

„Sie eine ungültige Menge eingegeben haben. Minimum ist $ 10.00“

durch einige Yü Fehler settin und sie in der Nähe der Textfelder auf der gleichen Seite angezeigt werden, wo der Benutzer ha ve die falschen Beträge eingegeben ...

ich es wie folgt nun tat:

if($_POST['WithdrawalRequestForm']['amount'] < 10){ 
       Yii::app()->user->setFlash('error', "Please enter a wihtdraw amount with at aleast 10.00 €"); 
       $this->redirect('withdrawalRequest'); 
      } 

hoffen, dass dies auch anderen Völkern helfen! ;)