CakePHP: модель доступа в другой модели / в app_model.php для валидации Banknumber - PullRequest
7 голосов
/ 07 мая 2011

Мне интересно, как я мог бы использовать данные из модели B, когда я проверяю модель A, здесь, чтобы проверить, является ли введенный Banknumber правильным:

Мои пользователи указывают свой банковский счет при регистрации. Например. "номер банкноты". Я проверяю это нормальным способом в моей модели user.php

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

Теперь я хочу знать, является ли введенный Banknumber реальным, поэтому я получил в своей БД таблицу «Banks» со всеми реальными Banknumbers, и я использую некоторые собственные функции проверки, которые я указываю в app_model.php.

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

Но это никогда не работает, потому что, пока я проверяю пользовательскую модель, я могу использовать ее только в функции app_model -, получая к ней доступ с помощью $ this-> name или около того ... a $ this-> Bank НЕ возможно, я получаю:

Неопределенное свойство: Пользователь :: $ Bank [APP \ app_model.php

Вызов функции-члена findByBanknumber () для необъекта

Есть ли ЛЮБОЙ способ импортировать / получать доступ к другим моделям в функции в app_model.php?

Спасибо!

Ответы [ 2 ]

24 голосов
/ 07 января 2012

ClassRegistry обычно следует использовать вместо AppImport, так как AppImport загружает только файл, а не регистрирует его должным образом, стиль торта.

Используя приведенный выше пример.

$bnk = ClassRegistry::init('Bank');
$bnk->findByBanknumber($data);
2 голосов
/ 07 мая 2011

вы можете импортировать вашу модель, создать ее экземпляр и использовать по своему усмотрению:

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