2011-05-07 12 views
7

Me pregunto cómo podría utilizar los datos de un modelo B mientras estoy validando el modelo A, aquí para verificar si un número de banco ingresado es correcto:CakePHP: Acceda al modelo en otro modelo/en app_model.php para la validación del número de banco

Mis usuarios especifican su cuenta bank durante el registro. P.ej. el "número de banco". Estoy validando esta la manera normal en mi modelo user.php

var $validate = array(
    'banknumber' => array(
     'minLength' => array(
      'rule' => array('minLength', 8), 
      'message' => '...', 
      'required' => true, 
     ), 

Ahora me gustaría saber si el Banknumber introducido es uno de verdad, así que conseguimos una mesa "Bancos" en mi base de datos con todos Banknumbers reales, y estoy usando algunas funciones propias de validación que especifico en app_model.php.

function checkBankExists($data) { 
    if (!$this->Bank->findByBanknumber($data)) { 
     return false; 
    } else { 
     return true; 
    }  
} 

Pero esto no está funcionando, porque mientras estoy validando el User-Modelo, sólo puedo utilizar éste en una app_model - función, para acceder a él con $ this-> nombre o algo así ... un $ this-> banco no es posible, me sale:

Undefined property: usuario :: $ Banco [APP \ app_model.php

llamada a una función miembro findByBanknumber() en un no-objeto

¿Hay CUALQUIER forma de importar/acceder a otros modelos en una función en app_model.php?

¡Gracias!

Respuesta

2

puede importar su modelo, crear instancia de ella y utilizarla como quiera:

App::import('model','Bank'); 
$bnk = new Bank(); 
$bnk->findByBanknumber($data); 
+0

Increíble, tan fácil, muchas gracias! – Bob

24

ClassRegistry general se debe utilizar en lugar de AppImport como AppImport sólo carga el archivo, en lugar de registrarlo correctamente, la torta estilo.

Utilizando el ejemplo anterior.

$bnk = ClassRegistry::init('Bank'); 
$bnk->findByBanknumber($data); 
Cuestiones relacionadas