我需要在从上一个选择框中选择一个银行后填写银行凭证选择框。
我尝试了这个优秀教程中的代码:Dynamic select box with CakePHP 2.0
调试时我可以在网络选项卡上看到我从选择的银行中选择选项文档的值是正确的。
问题是这些值没有更新浏览器中的选择框,只是保留了第一个旧值,而我在网络选项卡中看到它们就在那里。
我该如何解决?
我的代码是:
我选择银行的选择框:
<?php
echo $this->Form->input('Payment.bank_code', array(
'label' => 'Bank',
));
?>
需要更新的选择框:
<?php
echo $this->Form->input('Payment.bank_type_documents', array(
'label' => 'Type Doc',
));
?>
在表单的最后一部分,我声明了这段代码:
<?php
$this->Js->get('#PaymentBankCode')->event('change',
$this->Js->request( array(
'controller'=>'paymentbanktypedocuments',
'action'=>'getBankTypeDocuments'
), array(
'update'=>'#PaymentBankTypeDocuments',
'async' => true,
'method' => 'post',
'dataExpression'=>true,
'data'=> $this->Js->serializeForm(array(
'isForm' => true,
'inline' => true
))
)
)
);
?>
控制器方法
<?
public function getBankTypeDocuments() {
$bank_id = $this->request->data['Payment']['bank_id'];
$this->loadModel('PaymentTypeDocuments');
$banktypedocuments = $this->PaymentTypeDocuments->find('list', array(
'conditions' => array('PaymentTypeDocuments.bank_id' => $bank_id),
'fields' => array('value','name'),
'recursive' => -1
));
$this->set( 'banktypedocuments', $banktypedocuments );
$this->layout = 'ajax';
}
?>
//view
<?php foreach ($banktypedocuments as $key => $value): ?>
<option value="<?php echo $key; ?>"><?php echo $value; ?></option>
<?php endforeach; ?>