CakePHP验证动态字段的问题

时间:2016-06-27 14:01:47

标签: cakephp

我在表单中创建了以下字段 -

<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]">

现在我尝试使用以下模型函数 -

为上述字段添加验证
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();
}

但它不起作用。

你能告诉我这里有什么问题吗?

1 个答案:

答案 0 :(得分:0)

我想你正在使用cakephp 2.X

我认为问题是循环,而不是添加自定义验证方法来检查价格是否为空。

以下是本书的一个示例链接。 http://book.cakephp.org/2.0/en/models/data-validation.html#adding-your-own-validation-methods

另一个解决方案是使表格的价格为列id | product_id |值,将关联放在模型中,将价格的验证标准放入Price Model并在ProductController中放置&#34; saveAll&#34;而不是保存。 在这种情况下,您的表单必须如下:

<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]">

如果这不能回答您的问题,我将需要更多数据,例如控制器和数据库结构