如何在查找列表中使用相同的表两次,但在cakePHP 3.x中使用不同的displayFields

时间:2015-01-14 17:09:26

标签: cakephp-3.0

我有一个CountriesTable,我可以在其中找到字段'name'和'currency'。

目前,我有以下表定义:

class ProducsTable extends Table {

    public function initialize(array $config) {
        $this->table('products');
        $this->displayField('name');
        $this->primaryKey('id');
        $this->addBehavior('Timestamp');

        $this->hasMany('Productprices', [
            'foreignKey' => 'product_id',
        ]);

        $this->belongsTo('Countries', [
            'foreignKey' => 'country_id',
        ]);

    }
}

class ProductpricesTable extends Table {

    public function initialize(array $config) {
        $this->table('productprices');
        $this->displayField('name');
        $this->primaryKey('id');
        $this->addBehavior('Timestamp');

        $this->belongsTo('Products', [
            'foreignKey' => 'product_id',
        ]);

    }
}

类CountriesTable扩展了表{

    public function initialize(array $config) {
        $this->table('countries');
        $this->displayField('name');
        $this->primaryKey('id');
        $this->addBehavior('Timestamp');

        $this->hasMany('Products', [
            'foreignKey' => 'product_id',
        ]);

        $this->hasMany('Productprices', [
            'foreignKey' => 'product_id',
        ]);

    }
}

所以我有一个产品,其中包含国家/地区作为原产地以及与货币相关的价格清单。

当我创建产品时,我有以下表格:

<?= $this->Form->input('name', ['label' => __("Name :")]); ?>

<?= $this->Form->input('country_id', ['label' => __("Origin :")]); ?>

<?= $this->Form->input('pricelist.0.value', ['label' => __("Price :")]); ?>

<?= $this->Form->input('pricelist.0.country_id', ['label' => __("Currency :")]); ?>

当然,input('country_id')显示一个名单列表,而我希望第二个显示一个货币列表。

怎么办?

我基本上创建了一个名为CurrenciesTable的CountriesTable副本,指向同一个表'countries'并将Productprices与CurrenciesTable相关联....但听起来很奇怪......不是吗?

1 个答案:

答案 0 :(得分:0)

如果要创建下拉菜单,则必须将其类型设置为select

<?= $this->Form->input('country_id', ['type' => 'select, 'label' => __("Origin :")]); ?>

要为其添加选项,请使用:

<?= $this->Form->input('country_id', ['type' => 'select, 'options' => $list, 'label' => __("Origin :")]); ?>

$list必须是数组。这可以从具有$this->Model->find('list');的模型调用。在Controller中使用此代码。我猜你知道怎么做。

祝你好运!