Yii2 - 动态最小和最大值验证规则

时间:2016-08-09 15:47:03

标签: php yii2

如何为特定项目创建动态最小和最大验证?

购买时我使用的是型号购买,而对于我使用型号产品的产品。我需要在Buy模型中实现这个规则。

示例 - 我正在查看ID 12 的项目,此项目有100个单位的库存(这需要最大),最小订单数量为10(这需要最小)。

编辑:

产品(项目)表:

id
name
stock
minOffer

购买表格

id
offer
product_id
user_id

购买要约不能超过产品表中的当前库存。

1 个答案:

答案 0 :(得分:2)

在您的购买模式中,您可以编写自定义规则,如下所示。

public function rules()
    {
        return [
            ['product_id', 'checkmaxandminvalues'],//assuming product_id is a field in Buy

            // other rules
        ];
    }

public function checkmaxandminvalues($attribute, $params)
{
    $your_product=Products::find()->where(['_id'=>$this->product_id])->one();

    //Here you do your validation logic
    if($your_product->_id === 12 && $your_product->stock > 100)
    {
        $this->addError('product_id', 'Product stock should not be greater than 100');
    }
   else if($your_product->_id===12 && $your_product->stock < 10)
   {

        $this->addError('product_id', 'Product stock should not be less than 10');
   }
}