2010-12-29 2 views
0

Привет, Я пытаюсь получить доступ к правилам проверки связанной модели с моего основного контроллера. Кажется, он не работает, и я не смог найти никаких ссылок на это. Вот то, что я пытаюсь сделать: контроллерДоступ к правилам проверки в связанной модели (CakePHP)

пользователя надрез:

$this->User->TalentProfile->set($this->data); 
if ($this->User->TalentProfile->validates()) { 
    //it always validates and doesn't seem to see model's validation rules 
} 

TalentProfile Модель надрез:

var $validate = array (
     'first_name' => array(
      'maxLength' => array(
        'rule' => array('maxLength', 20), 
        'message' => 'Can not be longer than 20 characters.', 
        'last' => true 
      ), 
      'first_name_not_empty' => array(
        'rule' => 'notEmpty', 
        'message' => 'This field is required', 
        'last' => true 
      ), 
     ), 
); 

Я также попытался rewrapping массива со своей мыслью существом, что название модели может be screwing with validation:

$this->User->TalentProfile->set(array('TalentProfile',$this->data))); 

Я также пробовал эту надежду, но все же такие же результаты:

$this->loadModel('TalentProfile'); 
$this->TalentProfile->set($this->data)); 

Есть кое-что, что мне не хватает. Пожалуйста помоги! Благодаря

EDIT:

Я попытался сохранить данные формы, которая дает мне пробелы в SQL. Я думаю, что это может быть более простая проблема, чем я думал.

+0

Не могли бы вы использовать 'debug ($ this-> data)' перед функцией 'validates()' и опубликовать результаты? – RabidFire

+0

все пробелы для проверки пустых проверок. Массив ( [Пользователь] => Массив ( [имя_файла] => [mname] => [LNAME] => ) ) – Dobler

ответ

1

Задав массив $ Validate в TalentProfile модели, вам требуется, чтобы данные были в форме:

Array(
    [TalentProfile] => Array(
     [first_name] => 
    ) 
) 

Небольшое пояснение о том, как это работает:

В вызове $this->User->TalentProfile->validates() и $this->TalentProfile->validates() вас используют методы проверки в модели TalentProfile. Это означает, что CakePHP собирается проверять ваши входные данные на правила проверки в этой модели, поэтому он ожидает, что в массиве будет установлен ключ TalentProfile (но он не работает спокойно, если это не так).

В вашем массиве $validates вы установили правила проверки для ключа с именем first_name. CakePHP принимает этот ключ как имя поля, которое вводится из формы.

Прямо сейчас, вы принимаете входы как fname вместо first_name. Ваши входы также связаны с моделью User, а не TalentProfile.

Если вы объясните, что вы пытаетесь сделать с вашей формой, я могу помочь.

+0

ты святой! Я идиот. Я не могу поверить, что не понимал, что мои входные имена отключены! THANK YOU – Dobler

+0

О, и что происходит, я обрабатываю все задачи контроллера в пользовательском контроллере, но проверяю на переменные, которые будут использоваться в профиле, который будет сохранен на нескольких страницах. – Dobler

Смежные вопросы