2016-02-25 23 views
0

所以我有一個用戶表和安全問題表。我能夠創建一個帶有相關安全問題的用戶,但是當我查看配置文件時,我無法讓displayField正確顯示。CakePHP 3.0協會不顯示從另一個模型displayField

這是我的UsersTable.php

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('users'); 
    $this->displayField('email'); 
    $this->primaryKey('id'); 
    $this->hasOne('SecurityQuestions', 
     [ 'foreignKey' => 'security_question_id']); 

    $this->addBehavior('Timestamp'); 
} 

代碼下面是SecurityQuestionsTable.php

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('security_questions'); 
    $this->displayField('question'); 
    $this->primaryKey('security_question_id'); 

    $this->hasMany('Users', ['foreignKey'=>'security_question_id', 'bindingKey'=>'security_question_id']); 
    $this->belongsTo('SecurityQuestions', [ 
     'foreignKey' => 'security_question_id', 
     'joinType' => 'INNER' 
    ]); 
} 

在這裏,代碼是我UsersController.php視圖的方法:

public function view($id = null) 
{ 
    $user = $this->Users->get($id, [ 
     'contain' => [] 
    ]); 

    $this->set('user', $user); 
    $this->set('_serialize', ['user']); 
} 

最後但並非最不重要,查看代碼

<h3><?= h($user->id) ?></h3> 
<table class="vertical-table"> 
    <tr> 
     <th><?= __('Email') ?></th> 
     <td><?= h($user->email) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Password') ?></th> 
     <td><?= h($user->password) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('First Name') ?></th> 
     <td><?= h($user->first_name) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Last Name') ?></th> 
     <td><?= h($user->last_name) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Id') ?></th> 
     <td><?= $this->Number->format($user->id) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Created') ?></th> 
     <td><?= h($user->created) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Expiration') ?></th> 
     <td><?= h($user->expiration) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('User Status') ?></th> 
     <td><?= h($user->user_status) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Security Question') ?></th> 
     <td><?= h($user->security_question_id) ?></td> 
    </tr> 
    <tr> 
     <th><?= __('Security Question Answer') ?></th> 
     <td><?= h($user->security_question_answer) ?></td> 
    </tr> 
</table> 

我對CakePHP很新穎。

回答

0

幾件小事情你需要改變。

在你UsersTable:

$user = $this->Users->get($id, [ 
    'contain' => [] 
]); 

需求是

$user = $this->Users->get($id, [ 
    'contain' => ['SecurityQuestions'] 
]); 

而在你的視圖文件:

<tr> 
    <th><?= __('Security Question') ?></th> 
    <td><?= h($user->security_question_id) ?></td> 
</tr> 

需求是

<tr> 
    <th><?= __('Security Question') ?></th> 
    <td><?= h($user->security_question->question) ?></td> 
</tr> 

顯示字段主要用於創建下拉列表,以及通過構建腳手​​架視圖的一些插件(如crud-view)。

+0

Hii Dakota,你能解釋一下'$ user-> security_question-> question'中最後一個代碼是做什麼的。我需要類似的幫助[這裏](https://stackoverflow.com/questions/37671622/cakephp-3-display-title-from-other-table) –