Сообщения проверки не отображаются для связанных моделей в CakePHP - PullRequest
0 голосов
/ 26 сентября 2010

У меня есть набор моделей, который выглядит примерно так

  • Участник
    • Member_Addresses
    • Агенты
      • AgentAddress

У меня также есть форма, которая позволяет вам обновить все эти разные модели в одной форме. Я немного новичок в этом способе создания форм в CakePHP, и у меня возникают проблемы с отображением сообщений об ошибках проверки в моей форме.

Моя форма выглядит примерно так:

<?php echo $this->Form->create('Member',array('type' => 'file'));?>
<fieldset>
<?php
    echo $this->Form->input('first_name');
    echo $this->Form->input('last_name');
?>
</fieldset>
<fieldset>
    <?
    echo $this->Form->input('MemberAddress.0.line_1');
    echo $this->Form->input('MemberAddress.0.city');
    echo $this->Form->input('MemberAddress.0.state');
    echo $this->Form->input('MemberAddress.0.zip');
    ?>
</fieldset>
<fieldset>
<?
    echo $this->Form->input('MemberAddress.1.line_1');
    echo $this->Form->input('MemberAddress.1.city');
    echo $this->Form->input('MemberAddress.1.state');
    echo $this->Form->input('MemberAddress.1.zip');
?>
</fieldset>
<fieldset>
    <?
    echo $this->Form->input('Agent.0.agent',array('type'=>'text'));
    echo $this->Form->input('Agent.0.agency');
    echo $this->Form->input('Agent.0.email');
    echo $this->Form->input('Agent.0.phone');
    ?>
</fieldset>
<fieldset>
<?  
    echo $this->Form->input('Agent.0.AgentAddress.line_1');
    echo $this->Form->input('Agent.0.AgentAddress.city');
    echo $this->Form->input('Agent.0.AgentAddress.state');
    echo $this->Form->input('Agent.0.AgentAddress.zip');
?>
</fieldset>
<?php echo $this->Form->end('Submit');?>

Суть этой формы - это профиль пользователя (Member) с двумя слотами для адресов (MemberAddress), а также контактная информация для «агента» ... агентом моделируются Agent и AgentAddress. Я использую отношение hasMany для MemberAddresses, но разрешаю пользователям указывать только два адреса.

Я получаю сообщения проверки для модели-члена верхнего уровня, но я не получаю сообщения проверки для связанных моделей. В моем контроллере я решил не использовать saveAll (), потому что с элементами MemberAddress.0 и MemberAddress.1 я не смог бы ничего сохранить, оставив 2nd MemberAddress (MemberAddress.1) пустым. Поэтому я изменил saveAll () на сохранение, вставил логику сохранения в модель MemberAddress и возвращаю логическое значение из моего вызова MemberAddress-> update () в модели, чтобы сигнализировать об успехе или неудаче.

Как я могу всплыть сообщения об ошибках проверки для MemberAddress и моделей агентов (Agent и AgentAddress)?

1 Ответ

2 голосов
/ 26 сентября 2010

если вы не хотите использовать saveAll, вы можете использовать его только для целей проверки, то есть:

if($this->Member->saveAll($this->data, array('validate'=>'only'))){
   //your custom save function
}

проблема с проверкой заключается в том, что ошибки должны быть прикреплены к соответствующим элементам формы,и пока вы используете какую-то пользовательскую функцию сохранения, ошибки прикрепляются к MemberAddress.city, а их необходимо присоединить к MemberAddress.0.city.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...