1

我需要一些有关 Symfony 和 Doctrine 表格的帮助。

我想要的是向表单添加一个选择小部件,并使用数据库中的数据加载该选择小部件。

我在 Survey.class.php 中有这个:

$this->widgetSchema['service'] = new sfWidgetFormChoice(array(
  'choices'  => TService::getServiceTypes(),
  'multiple' => true,
  'expanded' => false));

这是 TService.class.php

class TService extends BaseTService
{
  static public function getServiceTypes()
  {
    return Doctrine::getTable("TService")
       ->createQuery()
       ->select('description')
       ->execute();
  }
}

我得到的是一个有 2 个选项的选择,这很好,但选项是“1”和“2”,而不是服务的描述。

建议?

感谢你们

4

4 回答 4

1

您应该使用sfWidgetFormDoctrineChoice而不是手动获取选项(它也有一个验证器对)。但是,您仍然会遇到当前的问题。解决方案:__toString()为您的 TService 对象实现魔术功能。

于 2011-02-24T21:23:39.050 回答
0

当你这样做./symfony doctrine:build --all时,如果你有正确的模式,它将自动创建 sfWidgetFormDoctrineChoice:

Survey:
  columns:
    tservice_id: { type: integer }
  relations:
    TService:
      class: TService
      local: tservice_id
      foreignAlias: Surveys

TService:
  columns:
    description: { type: string(100) }
于 2011-02-24T17:22:06.500 回答
0

我有一个“手动”解决方案,但我确信有更好的方法。我只是改变了TService::getServiceTypes方法

$table = Doctrine::getTable("TService")
   ->createQuery()
   ->select('description')
   ->execute();

$arrayServices = $table->toArray();
$descServices = array();
foreach ($arrayServices as $service){
    $descServices[] = $service['description'];
}

return $descServices;
于 2011-02-24T13:02:39.277 回答
0

希望从数据库中读取此填充下拉列表,即使它不是您想要的,它也会有所帮助。它基于 S 1.4 和 Doctrine。

于 2011-02-24T13:01:21.837 回答