关于文件:
首先,重要的是要注意,任何未分配场景的规则都将应用于所有场景。
所以我认为您可能不需要场景,只需使用通用规则/验证即可。
或者
您的规则有一个场景,如下所示:
public function rules()
{
return array(
[...]
array('cost_spares','numerical',
'integerOnly' => true,
'min' => 1,
'max' => 250,
'tooSmall' => 'You must order at least 1 piece',
'tooBig' => 'You cannot order more than 250 pieces at once',
'message' => 'Do not enter zero or/and characters for Spare parts!',
'on' => 'myScenario'),
array('cost_labour','numerical',
'integerOnly' => true,
'min' => 1,
'max' => 250,
'tooSmall' => 'You must order at least 1 piece',
'tooBig' => 'You cannot order more than 250 pieces at once',
'message' => 'Do not enter zero or/and characters for Labour Charges!',
'on' => 'myScenario'),
);
}
在您的控制器中,您只需编写:
public function actionUpdate ($id)
{
if (isset($_POST['TblEnquiry']))
{
[...]
$model->setScenario('myScenario');
}
}
编辑:
关于这个文件,我只是看到你只想要numerical
输入。因此,这可能更适合您的需求。而且由于两者都得到了相同的检查,您可以只进行一次检查,然后将消息传递给它。但就目前而言,这应该可行。
额外:
您的规则中还有另一个错误,就像您写的那样。
array('cost_spares', 'cost_spare_func', 'match',
'pattern' => '/^[a-zA-Z]+$/',
'message' => 'Do not enter zero or/and characters for Spare parts!',
'on' => 'cost_spare_func'),
这是不可能的。您不能混合使用规则验证功能和默认验证(如match
.
这意味着您只能validation function
这样定义:
array('cost_spares', 'cost_spare_func',
'message' => 'Do not enter zero or/and characters for Spare parts!',
'on' => 'cost_spare_func'),
或者使用这样的默认验证:
array('cost_spares', 'match',
'pattern' => '/^[a-zA-Z]+$/',
'message' => 'Do not enter zero or/and characters for Spare parts!',
'on' => 'cost_spare_func'),