从symfony2中的对象创建数组
我正在尝试访问数据库中的类别列表,并将它们放入Symfony2的表单中从symfony2中的对象创建数组,symfony,Symfony,我正在尝试访问数据库中的类别列表,并将它们放入Symfony2的表单中 public function productAddAction() { $product = new Product(); $categories = $this->getDoctrine() ->getRepository('AudsurShopBundle:Category') ->findAll();
public function productAddAction()
{
$product = new Product();
$categories = $this->getDoctrine()
->getRepository('AudsurShopBundle:Category')
->findAll();
$form = $this->createFormBuilder($product)
->add('category', 'choice', array(
'choices' => $categories, /* this is wrong */
'multiple' => false,
))
->add('name', 'text')
->add('save', 'submit', array('label' => 'Create Task'))
->getForm();
return $this->render('AudsurAdminBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
如何从$categories转换成一个可以放入下一部分的对象,并且它符合函数的预期
->add('category', 'choice', array(
'choices' => $categories, /* this is wrong */
'multiple' => false,
))
我知道这是基本的,但我似乎找不到正确的关键字来找到答案(我应该找什么?IRC,我认为有一种类型:
如果我理解你的意思,这对你想做的任何事情都会有帮助。:) IRC,我认为有一种类型: 如果我理解你的意思,这对你想做的任何事情都会有帮助。:) 首先,“这是错误的”并不是一个具体的错误信息,我们可以帮助您。这就像说“我的代码不工作”,却不告诉我们原因。继续讨论你的实际问题 您没有使用正确的表单类型来处理实体类型并正确显示它。正如@Talus提到的,您需要的字段类型是。您缺少一些东西,例如
类
参数和属性
参数(假设您没有在实体类中编写\u toString()
函数)
由于您使用的是所有存在的Category
实体,因此实际上不需要findAll()
查询。您可以选择以下选项:
如果您正在查找类别的特定子集,您可以像Prefore或那样使用choices
属性。首先,“this is error”(这是错误的)并不是一条特定的错误消息,我们可以为您提供很多帮助。这就像说“我的代码不工作”,却不告诉我们原因。继续讨论你的实际问题
您没有使用正确的表单类型来处理实体类型并正确显示它。正如@Talus提到的,您需要的字段类型是。您缺少一些东西,例如类
参数和属性
参数(假设您没有在实体类中编写\u toString()
函数)
由于您使用的是所有存在的Category
实体,因此实际上不需要findAll()
查询。您可以选择以下选项:
如果要查找类别的特定子集,可以使用prefore或那样的
choices
属性。您可以从数据库解析数组:
在存储库findalarray()中创建一个方法:
然后在控制器中调用它并获取所有类别:
$categories = $this->getDoctrine()
->getRepository('AudsurShopBundle:Category')
->findAllArray();
获得阵列后,使其适合选择
(创建新阵列$choices
):
然后将此新数组放入表单:
->add('category', 'entity', array(
'choices' => $choices,
希望有帮助。祝您愉快。您可以从数据库解析数组: 在存储库findalarray()中创建一个方法: 然后在控制器中调用它并获取所有类别:
$categories = $this->getDoctrine()
->getRepository('AudsurShopBundle:Category')
->findAllArray();
获得阵列后,使其适合选择
(创建新阵列$choices
):
然后将此新数组放入表单:
->add('category', 'entity', array(
'choices' => $choices,
希望有帮助。祝你度过愉快的一天。我不确定这是不是我的意思。我知道列表有表单函数。但是,一旦我从数据库中检索到了我的类别,我该如何将该对象更改为可以放入表单函数中的内容呢?我不确定这是否是我的意思。我知道列表有表单函数。但是,一旦我从数据库中检索到了我的类别,我该如何将该对象更改为可以放入表单函数中的内容呢?
$choices = array();
foreach ($categories as $category) {
$choices[$value['id']] = $value['title'];
}
->add('category', 'entity', array(
'choices' => $choices,