0
在一個表單中,當我從下拉列表中選擇客戶端的名稱時,下一行是從下拉列表中選擇產品的名稱,它會給出所有產品,但只需要那些由該選定客戶製造的物品。 (客戶端主鍵的數據庫文件爲client_id
,生產文件主鍵爲item_id
,外鍵爲client_id
)。help symfony 1.4
我是symfony的新手,有誰能幫我嗎?
謝謝,
在一個表單中,當我從下拉列表中選擇客戶端的名稱時,下一行是從下拉列表中選擇產品的名稱,它會給出所有產品,但只需要那些由該選定客戶製造的物品。 (客戶端主鍵的數據庫文件爲client_id
,生產文件主鍵爲item_id
,外鍵爲client_id
)。help symfony 1.4
我是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()
));
}
}
在View
<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>
上面的代碼發送Ajax請求到產品模塊與客戶端ID,並且基於客戶端ID執行查詢並返回給定客戶端ID的產品數據。
注意:應該啓用Javascript。
希望這對你有所幫助。你也可以用symfony的方式來做到這一點,請檢查symfony文檔。
你打算怎麼做?只有JavaScript?使用AJAX?只用PHP? – greg0ire 2011-04-13 09:59:17
更好的選擇是使用Ajax,因爲它比用於PHP的只有在禁用javascript時更好的用戶體驗...... – 2011-06-15 13:04:53