christiansalazarh

validando dos modelos en un form

Feb 8th, 2013
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.21 KB | None | 0 0
  1. // paso1:
  2. // SE CREA CON GII UN FORMULARIO PARA ESTE MODELO
  3. class CasaDueno extends CFormModel {
  4. public $casaNombre;
  5. public $casaNumero;
  6. public $duenoNombre;
  7. public $duenoApellido;
  8.    // ...blabla...completar las rules(), attributeLabels()...normal..  
  9. }
  10.  
  11. // paso 2:
  12. // en la controladora, hacer:
  13. public function actionCasaDueno(){
  14. blabla..lo que GII te hizo...
  15. $model->save();  //
  16. }
  17.  
  18. // paso 3:
  19. // OVERRIDE del metodo save()
  20. // USANDO TRANSACCIONES para ayudar a la integridad relacional.
  21.  
  22. class CasaDueno extends CFormModel /* OJO no es CActiveRecord */ {
  23.  ...atributos...
  24.   public function save(){
  25.      // como se ya se valido y todo esta bien...
  26.      $tr = Yii::app()->db->beginTransaction();
  27.      $casa = new Casa();
  28.      $casa->nombre = $this->casaNombre;
  29.      $casa->numero = $this->casaNumero;
  30.      if($casa->insert()){
  31.        // ahora con el dueño:  
  32.         $dueno = new Dueno();
  33.         $dueno->idcasa = $casa->primarykey;
  34.         if($dueno->save()){
  35.           // listo
  36.           $tr->commit();
  37.           return true;
  38.         }else{
  39.           $tr->rollback();  // deshara la CASA tambien automatic.
  40.         }
  41.      }
  42.      else{
  43.        $tr->rollback();
  44.      }
  45.    return false;
  46.   }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment