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的字段显示正确的值,而在表单没有显示任何值之前。
现在一切正常!