问题描述
|
在一种形式中,当我从下拉列表中选择客户的名称时,下一行是从下拉列表中选择产品的名称,它提供了所有产品,但只需要由此选定的客户制造的那些产品。
(在客户端主键的数据库文件中为primary0ѭ,而生产文件主键为
item_id
,外键为client_id
)。
我是symfony的新手,有人可以帮助我吗?
谢谢,
解决方法
以Symfony形式,
class ClientForm extends sfForm
{
public function configure()
{
$clients_data = ClientsData::getAllClients(); //get from database
$clients = array_merge(array(\"--Select Clients--\",$clients_data);
$this->setWidgets(array(
\"clients\" => new sfWidgetFormChoice(array(\"choices\" =>$clients)),\"products\" =>new sfWidgetFormChoice(array(\"choices\" =>array(\"--Select Product--\")))
));
$this->setValidators(array(
\"clients\" => new sfValidatorChoice(array(\"choices\" =>array_keys($clients_data))),\"products\" => new sfValidatorString()
));
}
}
在视野中
<script type=\"text/javascript\">
$(document).ready(function(){
$(\"#clients\").change(function(){
var client_id=$(\"#clients\").val();
$(\'#products > option\').remove();
$.ajax({
type: \'POST\',url: \'products/load\',async: true,cache: false,dataType : \'json\',data: \'cid=\'+client_id,success: function(jsonData){
$(jsonData.products).each(function()
{
$(\"#products\").append($(\'<option></option>\').val(this.id).html(this.item));
});
}
});
});
});
<script>
<form action=\"<?php url_for(\'submit/form\'); ?>\" id=\"form\" method=\"post\" >
<?php echo $form[\"clients\"]->render(array(\'id\' => \'clients\')); ?>
<?php echo $form[\"clients\"]->renderError(); ?>
<br/>
<?php echo $form[\"products\"]->render(array(\'id\' => \'products\')); ?>
<?php echo $form[\"products\"]->renderError(); ?>
<button type=\"submit\">submit</button>
</form>
上面的代码向具有客户端ID的产品模块发送Ajax请求,并基于客户端ID进行查询并返回给定客户端ID的产品数据。
注意:应该启用Javascript。
希望这对您有所帮助。您也可以通过symfony方式执行此操作,请检查symfony文档。