Yii 模型保存多个记录和验证规则

Yii 模型保存多个记录和验证规则,yii,model,yii-validation,Yii,Model,Yii Validation,我有一个例子,用户可以在列表框中选择多个值,并使用model将其保存到数据库中 这是表格结构 user_id int(11) , cars_id int(5) 以下是我的观点片段 <?php echo CHtml::dropDownList("sourceCars", '',CHtml::listData(MasterCars::model()->findAll(),'cars_code','car_name'),array('size'=>20) );?> <

我有一个例子,用户可以在列表框中选择多个值,并使用model将其保存到数据库中

这是表格结构

user_id int(11) , cars_id int(5)
以下是我的观点片段

<?php echo CHtml::dropDownList("sourceCars", '',CHtml::listData(MasterCars::model()->findAll(),'cars_code','car_name'),array('size'=>20) );?>

<?php echo CHtml::dropDownList("targetCars", '', array(),array('size'=>20) );?>

用户从sourceCars中选择车辆,并使用Jquery移动到targetCars中(此部分已完成),然后 单击保存或提交按钮

现在我应该能够保存他/她在targetCars列表中选择的所有汽车。此外,在模型中,我应该设置一个条件,即用户不能保存超过10辆车,并且至少应该选择一辆车。此外,用户可以一次选择5辆车,下次当他来时,他应该只能选择最多5辆车,因为他已经保存了10条记录


你能给我一些实施这个的想法吗?有什么能给我提供指导的链接吗?

你的问题是将汽车的选择限制在1-10辆之间。 您需要验证客户端和服务器的用户输入。 在服务器上,您可以自定义ActiveRecord验证

public function rules()
{
    return array(
        array('cards_id', 'limitSelect','min'=>1,'max'=>10),
    );
}

public function limitSelect($attribute,$params)
{
         //and here your code to get the count of selection of cars for a user
         ...
        if($count<=$params['min'])
           $this->addError('cards_id','at least one car should be selected');
        if($count>=$params['max'])
            $this->addError('cards_id',' can't select more than 10 cars');
}



    //and for mutiple select you can code this:
echo CHtml::dropDownList("sourceCars", '',CHtml::listData(MasterCars::model()->findAll(),'cars_code','car_name'),array('size'=>20,'multiple'=>true) );
//anyway you can implement it in several way
公共功能规则()
{
返回数组(
数组('cards_id','limitSelect','min'=>1,'max'=>10),
);
}
公共函数limitSelect($attribute,$params)
{
//这里是您的代码,用于获取用户选择汽车的数量
...
如果($countaddError('cards_id','至少应选择一辆车');
如果($count>=$params['max'])
$this->addError('cards_id','不能选择超过10辆车');
}
//对于Multiple select,您可以对其进行编码:
echo-CHtml::dropDownList(“sourceCars”,“”,CHtml::listData(MasterCars::model()->findAll(),'cars_code','car_name'),数组('size'=>20,'multiple'=>true));
//无论如何,您可以通过几种方式实现它

听起来您想使用,请参阅。您可以根据用户流动态设置场景。

感谢您的回复@user776067。我正在客户端级别进行验证。但在服务器级别,我正在寻求帮助并插入多条记录……您在顶部给我的验证在一次有效,如果用户在数据库中已经有9辆车了,他想再增加10辆车,我必须查询数据库,必须得到他的值,必须验证…使用dao插入记录