2016-06-27 9 views
0

I unten Felder angelegt haben, in meinem form-CakePHP Validierungsproblem für dynamische Felder

<input type="text" id="ProductPrice1" class="small" name="data[Product][price][1]"> 
<input type="text" id="ProductPrice1" class="small" name="data[Product][price][2]"> 
<input type="text" id="ProductPrice1" class="small" name="data[Product][price][3]"> 
<input type="text" id="ProductPrice1" class="small" name="data[Product][price][4]"> 

Jetzt versuche ich, unten Modellvalidierung für über Felder hinzufügen, indem Sie funktions-

public function productValidates() {  
    $validate= array(); 
    $validate = array(
     'name'=> array(
      'mustNotEmpty'=>array(
       'rule' => 'notEmpty', 
       'message'=> __('PRODUCTS.TITLE_BLANK_ERROR',true) 
      ) 
     ), 
     'description'=> array(
      'mustNotEmpty'=>array(
       'rule' => 'notEmpty', 
       'message'=> __('PRODUCTS.DESCRIPTION_BLANK_ERROR',true) 
      ) 
     ), 
     'category_id'=> array(
      'mustNotEmpty'=>array(
       'rule' => 'notEmpty', 
       'message'=> __('PRODUCTS.SELECT_CATEGORY_ERROR',true) 
      ) 
     ), 
    ); 

      $count = $this->data[$this->name]['total_prices']; 
    for($i=1; $i<= $count;$i++){   
     $validate['price'][$i] = array(
      '1' => array(
       'rule' => array('notEmpty',true), 
       'message' => __('PRODUCTS.PRICE_EMPTY_ERROR',true), 
       'last' => true 
      ) 

     ); 
    } 

    $this->validate = $validate; 
    return $this->validates(); 
} 

Aber sein funktioniert nicht.

Können Sie bitte vorschlagen, was ist das Problem hier?

+0

Zwar ist dies nicht das einzige Problem sein könnte , Sie haben dieselbe ID in mehreren HTML-Eingabeelementen angegeben. – user221931

+0

Sie haben Recht, ich habe die gleiche ID gegeben, aber das ist nicht mit dem Kuchen Validierung Fehler, den ich verlange. –

Antwort

0

Ich nehme an, dass Sie cakephp 2.X

Ich denke verwenden, dass das Problem der Schleife ist, statt dass eine benutzerdefinierte Validierungsmethode hinzufügen, um zu überprüfen, dass die Preise nicht leer sind.

Hier ist der Link zum Buch mit einem Beispiel. http://book.cakephp.org/2.0/en/models/data-validation.html#adding-your-own-validation-methods

Eine andere Lösung ist eine Tabelle, Preise mit Spalten-ID erstellen | product_id | Wert, setzen Sie den Verein in den Modellen, stellen die Validierungskriterien der Preise in den Preismodell und in der Product setzen „SaveAll“ statt sparen. In diesem Fall müssen Sie Ihre Form wie:

<input type="text" id="ProductName" class="small" name="data[Product][name]"> 
<input type="text" id="ProductDescription" class="small" name="data[Product][description]"> 
<input type="text" id="PriceValue1" class="small" name="data[Price][0][value]"> 
<input type="text" id="PriceValue1" class="small" name="data[Price][1][value]"> 
<input type="text" id="PriceValue1" class="small" name="data[Price][2][value]"> 
<input type="text" id="PriceValue1" class="small" name="data[Price][3][value]"> 

wenn dies Ihre Frage nicht beantworten, werde ich wie der Controller mehr Daten benötigen und die Struktur Ihres db