Symfony 1.4:如何使用AJAX的函数在select依赖中检索所选值?

在我的数据库中,我有两个相关的字段。 第二个字段取决于第一个字段中选择的值。 关系是:

在此处输入图像描述

我以表“conflictos_1”的forms使用的函数是:

  $(document).ready(function() { $("#conflictos1_id_sector_actividad").change(function() { var id_sub = $(this).val(); if(id_sub != '') { $.ajax ({ type: "POST", url: ''+ '?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("-- No se ha seleccionado subsector --"); } return false; }); });  

当我添加新记录时,一切正常。 但是当我编辑记录时,选择依赖,不显示“已选择”值。 在编辑模式下,当我查看字段“id_subsector_actividad”时,所选的值应该是,例如, :这是我在检查元素时在表单上看到的内容使用AJAX的function创建:

  14.1 Meretrices Preparación de alimentos y comedor Seguridad redes sanitarias  

这就是我想要看到的:

  14.1 Meretrices Preparación de alimentos y comedor Seguridad redes sanitarias  

我使用此函数来过滤表“Subsector_actividad_ta8”中的记录(我使用Symfony 1.4和Doctrine):

  public function executeSubsector() { $id_sub = $_POST['id_sub']; $this->subsec= Doctrine_Core::getTable('SubsectorActividadTa8') ->createQuery('a') ->where('a.id_sector = ?', $id_sub) ->execute(); } 

我的问题是:当我编辑现有记录时,我应该在AJAX函数中更改什么,以在第二个字段中显示“selected”值?

也许有类似的东西:

 $("option[value='37']").attr('selected', 'selected'); 

您有类似的问题: 设置选择框的选定选项

这是我遇到的解决方案:我把问题分成两部分。

案例1:新记录

我在问题中使用了上面显示的相同JQuery函数。 具有相关function,也如上所示。 这个案子不属于我的问题

案例2:编辑现有记录(这是我的问题)

我在小部件中添加了'id_subsector_actividad'属性'table_method'=>'Subsector'与函数public function Subsector()相关联(参见下面的代码)。

在conflictos1的部分_form.php中,我为字段id_subsector_actividad编写了以下代码:

 getObject()->isNew()): ?>   getObject()->isNew()): ?>  

在conflictos1的action.class.php中,我修改了函数executeEdit,并添加了变量$elsector

 public function executeEdit(sfWebRequest $request) { global $elsector; $this->forward404Unless($conflictos1 = Doctrine_Core::getTable('Conflictos1')->find(array($request->getParameter('id'))), sprintf('Object conflictos1 does not exist (%s).', $request->getParameter('id'))); $elsector= $conflictos1->getIdSectorActividad(); $this->form = new Conflictos1Form($conflictos1); } 

我在$elsector中创建的以下函数中使用$elsector

 public function Subsector() { global $elsector; if (!is_null($elsector)){ $id_sub=$elsector; $query= Doctrine_Query::create() ->select('a.id') ->from('SubsectorActividadTa8 a') ->innerJoin('a.Conflictos1 c') ->where('a.id_sector = ?', $id_sub); return $query->execute(); } } 

因此,Symfony显示在表单上,​​名为IdSubsectorActividad的字段的值,以前没有显示。

换句话说,现在当我在表conflictos1编辑记录时,名为IdSubsectorActividad的字段显示正确的值,而在表单没有显示任何值之前。

现在一切正常!