我正在用Yii2开发某种金融计算器。
我有一个ActiveRecord模型操作,其中包括几个字段:
因此,用户创建操作,填写这些字段并保存。很好。
但是现在我想创建一种新型的操作-不仅是使用信用卡进行费用操作,而且还要在用户的信用卡之间进行资金转移(从一个source_id到另一个source_id)。
在我的Operation模型中,我为此功能创建了场景:
const SCENARIO_TRANSFER = 'transfer';
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_TRANSFER] = ['user_id', 'source_id', 'source_id2', 'sum', 'name'];
return $scenarios;
}
此方案不使用category_id。它改为使用source_id2-用于属性比较的新属性。
因此,我向模型添加了一个新属性(当然,它在我的数据库表中不存在):
public $source_id2;
现在,我对如何为这种情况创建正确的验证规则感到困惑。 我需要: -source_id2-在新方案中是必需的, -source_id2-必须不同于source_id,
我已经添加:
public function rules(){
['source_id2', 'required', 'on' => self::SCENARIO_TRANSFER],
['source_id2', 'compare', 'compareAttribute' => 'source_id', 'operator' => '!=', 'on' => self::SCENARIO_TRANSFER],
}
对吗?
在View中,我需要创建一个包含“ source_id”和“ source_id2”字段(下拉列表)的表单。但是我的模型中只有'source_id'。如何创建此表单并为其创建正确的价目表?
谢谢。