【问题标题】:How to validate for either one or another field in a model using yii1.1?如何使用 yii1.1 验证模型中的一个或另一个字段?
【发布时间】:2021-08-23 13:10:31
【问题描述】:

在一个 yii@1.1 项目中,我有一个模型,其字段为 event_id,其规则如下:

public function rules(): array
{
    return [
        ['event_id', 'required'],
        ['event_id', 'numerical', 'integerOnly' => true],
    ];
}

现在我想扩展表格以便还有一个video_id

我不确定如何检查event_idvideo_id。这是否可以通过rules 方法实现,还是我需要添加一些自定义验证?

我不想让这两个字段都是可选的,因为应该设置其中一个但不能同时设置。

【问题讨论】:

标签: php yii


【解决方案1】:

您可以使用when

['event_id', 'required', 'when' => function($model) {
    return $model->video_id === null;
}], 
['video_id', 'required', 'when' => function($model) {
    return $model->event_id === null;
}]

看起来它只存在于 2.X ... 而在 1.X 中你可以使用这个扩展 https://www.yiiframework.com/extension/yii-conditional-validator

【讨论】:

  • 不应该是一个相同的检查而不是你的非身份检查吗?我读它是因为当 video_id 不为空时应该需要 event_id。但是当 video_id 不为空时,事件 id 应该为空。我会测试它:)
  • @k0pernikus 是的,抱歉,我没有测试它......重点是when 子句,但你是对的
  • Yii 1.x 中不存在when 属性。这是 Yii 2 的新功能。
  • 我在让扩展程序正常工作时遇到问题。如果你知道怎么做,我很感激你的洞察力:stackoverflow.com/questions/69106834/…
猜你喜欢
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
相关资源
最近更新 更多