1

Symfony 1.4 を使用しています。以下に示すように、互いに関連する 3 つのテーブルがあります。

表1:

Conflictos1:
  connection: doctrine
  tableName: conflictos_1
  columns:
    id:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true

    id_sector_actividad:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false

    id_subsector_actividad:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: false
      autoincrement: false

  relations:

    SectorActividadCiuTa7:
      local: id_sector_actividad
      foreign: id
      type: one
    SubsectorActividadTa8:
      local: id_subsector_actividad
      foreign: id
      type: one

表 2 および 3:

SectorActividadCiuTa7:
  connection: doctrine
  tableName: sector_actividad_ciu_ta7
  columns:
    id:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    sector_actividad:
      type: string(255)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
  relations:
    Conflictos1:
      local: id
      foreign: id_sector_actividad
      type: many
    SubsectorActividadTa8:
      local: id
      foreign: id_sector
      type: many
SubsectorActividadTa8:
  connection: doctrine
  tableName: subsector_actividad_ta8
  columns:
    id:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    id_sector:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    descripcion:
      type: string(255)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
  relations:
    SectorActividadCiuTa7:
      local: id_sector
      foreign: id
      type: one
    Conflictos1:
      local: id
      foreign: id_subsector_actividad
      type: many

「conflictos」という名前のモジュールを Symfony で生成しました。このモジュールには部分的な _form.php があります。この部分には AJAX 関数が含まれています。ここにコード:

<?php use_stylesheets_for_form($form) ?>
<?php use_javascripts_for_form($form) ?>
<?php use_helper('Date') ?>

<!--Aquí el javascript para select dependientes-->
<script type="text/javascript">
$(document).ready(function()
{
    $("#conflictos1_id_sector_actividad").change(function()
    {
        var id_sub = $(this).val();
        if(id_sub != '')
        {
            $.ajax
            ({
                type: "POST",
                url: '<?php echo url_for('conflictos/subsector'); ?>'+ '?id=' + id_sub,
                cache: false,
                data: "id_sub="+ id_sub,
                success: function(data)
                {
                    $("#conflictos1_id_subsector_actividad").html(data); // but it does not select the value of dropdown list.
                }
            });
        }
        else
        {
            $("#conflictos1_id_subsector_actividad").html("<option value=''>-- No se ha seleccionado subsector --</option>");
        }
        return false;
    });
});
</script>
<form action="<?php echo url_for('conflictos/'.($form->getObject()->isNew() ? 'create' : 'update').(!$form->getObject()->isNew() ? '?id='.$form->getObject()->getId() : '')) ?>" method="post" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
    <?php if (!$form->getObject()->isNew()): ?>
        <input type="hidden" name="sf_method" value="put" />
    <?php endif; ?>
    <table border="0" width="96%">
        <tfoot>
            <tr>
                <td align="center" colspan="4">
                    <?php echo $form->renderHiddenFields(false) ?>
                    &nbsp;<a href="<?php echo url_for('conflictos/index') ?>"><button class="btn btn-success" type="button">Listado</button></a>
                    <?php if (!$form->getObject()->isNew()): ?>
                        &nbsp;<?php echo link_to('<button class="btn btn-danger" type="button">Borrar</button>', 'conflictos/delete?id='.$form->getObject()->getId(), array('method' => 'delete', 'confirm' => '¿Está seguro?')) ?>
                    <?php endif; ?>
                    <!--<input type="submit" value="Save" />-->
                    <button class="btn btn-primary" type="submit">Grabar</button>
                </td>
            </tr>
        </tfoot>
        <tbody>
            <?php echo $form->renderGlobalErrors() ?>
            <tr>
                <td  width="24%"><?php echo "<b>Sector Actividad <font color='red'> (*)</b></font><br>"  ?>
                    <?php echo $form['id_sector_actividad']->renderError() ?>
                    <?php echo $form['id_sector_actividad'] ?>
                </td>
                <td  width="24%"><?php echo "<b>Subsector Actividad</b><br> "  ?>
                    <?php echo $form['id_subsector_actividad']->renderError() ?>
                    <select name="conflictos1[id_subsector_actividad]" id="conflictos1_id_subsector_actividad">
                        <option value="" selected="selected">Seleccione sub-sector</option>
                </td>
        </tbody>
    </table>
</form>

新しいレコードを追加するときは AJAX 関数は正常に機能しますが、レコードを編集するときに、select id_subsector_actividad に対応するフィールドが空で表示されます。

私の質問は: Symfony で関数 executeEdit を呼び出すときに、フィールド値「id_subsector_actividad」を表示するには、AJAX 関数で何を変更すればよいですか?

4

1 に答える 1

0

問題を解決しました。関数は次のようになります。

<script type="text/javascript">
$(document).ready(function()
{
    var sector = document.getElementById("conflictos1_id_sector_actividad");

    var id_sub = sector.options[sector.selectedIndex].value;

    {
      $.ajax
      ({
         type: "POST",
         url: '<?php echo url_for('conflictos/subsector'); ?>'+ '?id=' + id_sub,
         cache: false,
                 data: "id_sub="+ id_sub,

success: function(data)
                    {
//                          alert(data);// its show my returned value

                         $("#conflictos1_id_subsector_actividad").html(data);// but it does not select the value of dropdown list.
                   }  
      });
     }

  $("#conflictos1_id_sector_actividad").change(function()
  {

    var id_sub = $(this).val();

    if(id_sub != '')  
     {
      $.ajax
      ({
         type: "POST",
         url: '<?php echo url_for('conflictos/subsector'); ?>'+ '?id=' + id_sub,
         cache: false,
                 data: "id_sub="+ id_sub,

success: function(data)
                    {                        

                         $("#conflictos1_id_subsector_actividad").html(data);// but it does not select the value of dropdown list.
                   }  
      });
     }
     else
     {
       $("#conflictos1_id_subsector_actividad").html("<option value=''>-- No se ha seleccionado subsector --</option>");
     }
    return false;
  });
});
</script>

ドキュメントが読み込まれると、同じ関数が実行されるようになりました。ここでより良い答えが得られました: Symfony 1.4: AJAX's function in selectdependent? で選択した値を取得するにはどうすればよいですか?

于 2013-10-09T23:05:26.683 に答える