ドキュメントに関して:
まず、シナリオが割り当てられていないルールはすべてのシナリオに適用されることに注意してください。
したがって、シナリオは必要なく、一般的なルール/検証を使用するだけでよいと思います。
また
次のようなルールのシナリオが 1 つあります。
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');
}
}
編集:このドキュメント
に関しては、入力のみが必要なことがわかりました。したがって、これはあなたのニーズにより適しているかもしれません。どちらも同じチェックを取得したため、1 つのチェックを実行して、後でメッセージを渡すことができます。しかし、今のところ、これでうまくいくはずです。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'),