【发布时间】:2016-03-09 09:32:12
【问题描述】:
我有一个表单,用户可以在其中选择一些选项,并且我想根据用户输入在 DB 中插入一个附加的连接字段。我需要在 SCENARIO_CREATE 上进行(并更新)。例如:
type: A
size: 100
color: black
concatenated: A100black
我试过这样:
型号:
class Xyz extends BaseXyz {
const SCENARIO_CREATE = 'create';
public function rules() {
...
['concatenated', 'generateConcatenated', 'on' => self::SCENARIO_CREATE],
...
public function generateConcatenated() {
return $this->type . $this->size . $this->color;
}
控制器:
class XyzController extends base\XyzController {
public function actionCreate() {
$model = new Xyz;
$model->scenario = Xyz::SCENARIO_CREATE;
...
我在规则中也尝试过'filter',但没有成功。也许我的做法是完全错误的,不能在规则中做到?请指出我正确的方向。非常感谢!
【问题讨论】:
-
您有两个选择:第一个解决方案您可以在表单中为
concatenated列创建隐藏字段,并在更改事件上使用 javascript 连接来自输入类型、大小、颜色的数据(可能还有其他 js 事件)这三个输入和concatenated隐藏字段的设置值。 第二个解决方案您可以在模型中创建连接字段值并将其结果放入concatenated字段的方法。
标签: activerecord insert yii2 concatenation scenarios