사용자가 symfony 응용 프로그램에서 양식을 개발 중입니다. 여기에서 사용자는 HTML select
요소를 사용하여 국가, 지역 및 옵션 아일랜드를 표시해야합니다.symfony sfWidgetFormDoctrine 선택 불러 오기 제한된 결과 집합으로 선택
세 가지 모델이 있습니다 : 국가, 지역 및 섬;
...
'country_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Country'), 'add_empty' => false)),
'region_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Region'), 'add_empty' => false)),
'island_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Island'), 'add_empty' => true)),
...
국가 목록이 크고, 따라서 지역 목록, 나는 Region
및 Island
에서 사용할 수있는 옵션을 필터링에 생각해 봤는데 이후 :와 심포니는 sfWidgetFormDoctrineChoice
위젯을 사용하는 형태로 자동 생성 된 세 개의 위젯이있다 국가에서 선택한 값에 따라
jQuery의 change
메소드와 간단한 AJAX 요청을 사용하면 HTML 문서가 준비된 후에이 작업을 쉽게 수행 할 수 있습니다. 그러나 Symfony에서 직접 폼 구성을 사용하여 기본 결합 된 선택을 할 수있는 방법이 있는지 궁금합니다.
제안 사항?
감사합니다.
$countryId = $this->getObject()->getCountry()->getTable()->getDefaultCountryId();
$regionId = $this->getObject()->getRegion()->getTable()->getDefaultRegionId($countryId);
$islandId = $this->getObject()->getIsland()->getTable()->getDefaultIslandId($regionId);
$this->widgetSchema->setDefault('country_id', $countryId);
$this->setWidget('region_id', new sfWidgetFormDoctrineChoice(array(
'model' => $this->getRelatedModelName('Region'),
'query' => $this->getObject()->getRegion()->getTable()->getRegionsQuery($countryId),
'default' => $regionId,
)));
$this->setWidget('island_id', new sfWidgetFormDoctrineChoice(array(
'model' => $this->getRelatedModelName('Island'),
'query' => $this->getObject()->getIsland()->getTable()->getIslandsQuery($regionId),
'add_empty' => '---',
'default' => $islandId,
)));
을 그리고 jQuery를 사용하여 AJAX 요청과 함께 사용할 수있는 옵션을 업데이트 :
아약스를 통해로드하거나 자바 스크립트로 표시/숨기기를 원하십니까? – Dziamid
선택 필드를 업데이트하는 것과 관련하여 나머지 코드를 보는 것이 좋습니다. – John
Checkout [sfDependentSelectPlugin] (http://www.symfony-project.org/plugins/sfDependentSelectPlugin) – Dziamid