我在表单中创建了以下字段 -
<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();
}
但它不起作用。
你能告诉我这里有什么问题吗?
答案 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]">
如果这不能回答您的问题,我将需要更多数据,例如控制器和数据库结构