2011-08-12 2 views
0

사용자가 목록 상자에서 여러 값을 선택하고 모델을 사용하여 데이터베이스에 저장할 수있는 경우가 있습니다. 여기 모델 저장 mutiple 레코드 및 유효성 검사 규칙

는 jQuery를 사용하여 targetCars에

<?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 및 이동에서 차를 선택 내보기의 조각 테이블 구조 여기

user_id int(11) , cars_id int(5) 

입니다 (이 부분은 완료) 및 저장 또는 제출 버튼을 클릭합니다.

이제 내가 선택한 자동차를 targetCars 목록에 모두 저장할 수 있어야합니다. 게다가 모델에서는 사용자가 10 대 이상의 자동차를 절약 할 수없고 최소 1 대의 자동차를 선택해야한다는 조건을 제시해야합니다. 또한 사용자는 한 번에 5 대의 자동차를 선택할 수 있으며 다음 번에는 10 개의 레코드를 저장 한 이후에만 최대 5 대의 차량을 선택할 수 있어야합니다.

구현할 수있는 아이디어가 있습니까? 나를 안내 할 수있는 링크?

답변

1

귀하의 질문은 1-10 사이의 차량 선택을 제한하는 것입니다. 클라이언트와 서버 모두에서 사용자 입력의 유효성을 검사해야합니다. 서버에서 , 당신은 당신이 docs here를 참조 scenarios를 사용하려면 같은

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 
+0

@ user776067 답장을 보내 주셔서 감사합니다. 클라이언트 수준에서 유효성 검사를하고 있습니다. 하지만 서버 수준에서 나는 여러 레코드 삽입에 대한 도움을 찾고 있는데 ... 사용자가 이미 데이터베이스에 9 개의 자동차가 있고 10 개의 더 많은 자동차를 추가하고 싶다면 유효성 검사를 한 번에 다음 번에 수행하면됩니다. , 나는 데이터베이스를 쿼리하고 자신의 값을 가지고 유효성을 검사해야 ... – Bujji

+0

DAO를 사용하여 레코드를 삽입 – Bujji

0

는 소리 사용자 지정 액티브 확인 할 수 있습니다. 사용자 흐름에 따라 CModel::setScenario으로 시나리오를 동적으로 설정할 수 있습니다.

관련 문제