помогите symfony 1.4 - PullRequest
       4

помогите symfony 1.4

0 голосов
/ 13 апреля 2011

В форме, когда я выбираю имя клиента из выпадающего списка, следующей строкой является выбор имени продукта из выпадающего списка, и в нем перечислены все продукты, но нужны только те элементы, которые изготовлены поэтот выбранный клиент.(в файле базы данных первичный ключ клиента - client_id, первичный ключ рабочего файла - item_id, а внешний ключ - client_id).

Я новичок в Symfony, кто-нибудь может мне помочь?

Спасибо,

1 Ответ

0 голосов
/ 15 июня 2011

В форме 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>

Приведенный выше код отправляет запрос Ajax в модуль продуктов с идентификатором клиента и на основе идентификатора клиента выполняет запроси возвращает данные о продукте для данного идентификатора клиента.

ПРИМЕЧАНИЕ. Javascript должен быть включен.

Надеюсь, это помогло вам.Вы также можете сделать это способом Symfony, пожалуйста, проверьте документы Symfony.

...