1

この他の質問

足場CakephpでID以外のものを表示する

ここや他の場所で多くの場所で回答されており、選択リストが必要であるが、idの代わりに表示されるテキストフィールドの名前が「名前」ではない状況を扱っています。どうやら、Cakeは、モデルに次のように入力して、「名前」の代わりにフィールドの名前を指定すると、これを処理できるようです。

var $displayField = 'NonNameName';

ただし、すべての例は1つの選択に対するものです。しかし、私は3つの選択リストを持っているので、それらを追加するにはどうすればよいですか?もちろん、次のコードが示すように、これを行うことはできません(たとえば、 "var $ displayField =" ...";"の3行..3つの$displayFieldを使用しても意味がありません..

<?php
App::uses('AppModel', 'Model');
/**
 * Visit Model
 *
 * @property User $User
 * @property Referrer $Referrer
 * @property Company $Company
 */
class Visit extends AppModel {

    //The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * belongsTo associations
 *
 * @var array
 */

var $displayField = 'location';
var $displayField = 'referrer';
var $displayField = 'company';


    public $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'Referrer' => array(
            'className' => 'Referrer',
            'foreignKey' => 'referrer_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'Location' => array(
            'className' => 'Location',
            'foreignKey' => 'location_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),      
        'Company' => array(
            'className' => 'Company',
            'foreignKey' => 'company_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
}

私のコントローラーには

$companies= $this->Visit->Company->find('list');
$locations = $this->Visit->Location->find('list', array('conditions' => array('company_id' => $this->Auth->user('company_id'))));
$referrers = $this->Visit->Referrer->find('list', array('conditions' => array('company_id' => $this->Auth->user('company_id'))));   
    $this->set(compact('locations','referrers','companies'));
4

3 に答える 3

0

私はあなたがすることを意味すると思います:

// controller/action
$locations = $this->Visit->Location->find('list');
$referrers = $this->Visit->Referrer->find('list');
$companies = $this->Visit->Company->find('list');
$this->set(compact('locations', 'referrers', 'companies'));

あなたの見解では:

echo $this->Form->input('location_id');
echo $this->Form->input('referrer_id');
echo $this->Form->input('company_id');

display-fieldそれは(はずです)3つの選択を生成します-あなたが求めている動作を模倣します。

ケーキを引用するには:

find('list', $params) は、インデックス付きの配列を返します。これは、入力選択ボックスに値を設定する場合など、リストが必要な場合に便利です。

http://book.cakephp.org/1.3/view/1022/find-list

于 2012-06-12T20:05:30.377 に答える
0

CakePHP 3.x の場合:

App/Model/Table/Your_Table.php を開きます

public function initialize(array $config) {
    $this->displayField(['full_name', 'email']);
}

リストを取得する場合:

TableRegistry::get('Your')->find('list');

結果は次のようになります。

[
    [key => 'full_name;email'],
    [key => 'full_name;email'],
];
于 2016-01-06T07:11:57.750 に答える