我有一个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相关联....但听起来很奇怪......不是吗?
答案 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中使用此代码。我猜你知道怎么做。