У меня есть 3 класса: Category
, Parameter
и Product
.
Category
имеет отношение один ко многим с Parameters
. Product
имеет отношение один-ко-многим с Category
. Parameters
- это атрибуты для продукта (цвет, вес, размер, марка и т. Д.).
Когда я выбираю категорию и создаю новый продукт, я хочу создать форму с этими параметрами.Как я могу это сделать?Возможно ли это с помощью Symfony Form Framework?Я надеюсь на вашу помощь.
Я пытаюсь сделать что-то вроде:
class ProductRepository extends EntityRepository
{
public function getParameters()
{
$em = $this->getEntityManager();
$parameters = $em->getRepository('ShopProductBundle:CatParameter')->findAll();
$data = array();
foreach ($parameters as $k => $value) {
$name = $value->getId();
$data[$name] = array("label" => $value->getName());
}
return $data;
}
}
Форма класса
class ProductType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name', 'text', array('label' => 'Name'));
$data = $options['data'];
foreach($data as $k => $item){
$builder->add((string)$k, 'text', array('label' => $item['label']));
}
}
public function getName()
{
return 'shop_productbundle_categorytype';
}
public function getDefaultOptions(array $options){
return array('data_class' => 'Shop\ProductBundle\Entity\Product');
}
}
И создать форму в действии:
$parameters = $em->getRepository('ShopProductBundle:Product')->getParameters();
$form = $this->createForm(new ProductType(), $parameters);
Конец имеет исключение:
Ожидаемый аргумент типа «Магазин \ ProductBundle \ Entity \ Product», «массив» задан