2011-10-13 3 views
0

사용자가 다른 사용자에게 메시지를 보낼 수있는 메시지 컨트롤러를 만들고 있습니다. 여기 내 데이터베이스 구조자동 드롭 다운 상자가 cakephp를 채우지 않습니다.

사용자

id 
username 
password 

메시지

id 
to_id 
from_id 
subject 
message 

to_id 모두 사용자의 id 컬럼을 참조 from_id입니다. 여기에 메시지

메시지

<?php 
class Message extends AppModel { 
    var $name = 'Message'; 
    var $displayField = 'subject'; 


    var $validate = array(
     'id' => array(
      'numeric' => array(
       'rule' => array('numeric'), 
       //'message' => 'Your custom message here', 
       //'allowEmpty' => false, 
       //'required' => false, 
       //'last' => false, // Stop validation after this rule 
       //'on' => 'create', // Limit validation to 'create' or 'update' operations 
      ), 
     ), 
     'to_id' => array(
      'numeric' => array(
       'rule' => array('numeric'), 
       //'message' => 'Your custom message here', 
       'allowEmpty' => false, 
       'required' => false, 
       //'last' => false, // Stop validation after this rule 
       //'on' => 'create', // Limit validation to 'create' or 'update' operations 
      ), 
     ), 
     'from_id' => array(
      'numeric' => array(
       'rule' => array('numeric'), 
       //'message' => 'Your custom message here', 
       'allowEmpty' => false, 
       'required' => false, 
       //'last' => false, // Stop validation after this rule 
       //'on' => 'create', // Limit validation to 'create' or 'update' operations 
      ), 
     ), 
      ); 

     var $belongsTo = array(
       'Sender' => array(
         'className' => 'User', 
         'foreignKey' => 'to_id' 
         ), 
       'Recipient' => array(
         'className' => 'User', 
         'foreignKey' => 'from_id' 
         ) 
       ); 
} 

내 모델 것은 여기에 내보기

<div class="messages form"> 
<?php echo $this->Form->create('Message');?> 
    <fieldset> 
     <legend><?php __('Add Message'); ?></legend> 
    <?php 
     echo $this->Form->input('to_id'); 
     echo $this->Form->input('from_id'); 
     echo $this->Form->input('subject'); 
     echo $this->Form->input('message'); 
    ?> 
    </fieldset> 
<?php echo $this->Form->end(__('Submit', true));?> 
</div> 
<div class="actions"> 
    <h3><?php __('Actions'); ?></h3> 
    <ul> 

     <li><?php echo $this->Html->link(__('List Messages', true), array('action' => 'index'));?></li> 
    </ul> 
</div> 

그것은 드롭 다운 상자를 표시하지만, 거기에 어떤 사용자입니다. 난 내가 그렇게하지 않으면 작동하지 않습니다 마크에 의해 명시된

답변

0

이처럼 작동하지 않습니다 여전히

echo $this->Form->input('Sender.to_id'); 
    echo $this->Form->input('Recipient.from_id'); 

같은 접두사를 추가

경우에도 사용자 테이블이어야 5 사용자가 국제 대회에 충실하십시오. 이름 바꾸기 ForeignKeys를, 보낸 사람 => SENDER_ID받는 사람 => recipient_id

당신이보기에

$senders = $this->Message->Sender->find('list'); 
    $recipients = $this->Message->Recipient->find('list'); 
    $this->set(compact('senders', 'recipients')); 

그런 메시지 컨트롤러

먼저 컨트롤러 목록을해야

echo $this->Form->input('recipient_id'); 
echo $this->Form->input('sender_id'); 
+0

답변이 약간 잘못되었습니다 - $ froms 및 $ tos가 선택 상자를 자동 채우기합니다. 그렇지 않으면 수동으로 'options'=> $ senders 등이 필요합니다. – mark

+0

지금 테스트 할 수는 없지만 연결이 있기 때문에 이런 식으로 작동해야합니다. – kaklon

+0

마크가 맞으면 연관 자체만으로는 작동하지 않습니다. –