我遇到了Symfony 2.5的一些問題我需要dinamicaly修改基於一些參數,我必須從控制器傳遞,但我無法初始化$ options數組添加到任務。問題注入參數query_builder裏面的buildForm Symfony 2.5
我的文件:
// ordersContrroller.php
$orders=new OrdersM();
$form = $this->createForm(new ListOrdersType(), $orders, array('id'=>1));
// ListOrdersType.php
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\Event\DataEvent;
use Symfony\Component\Form\FormEvents;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class ListOrdersType extends AbstractType
{
public function getDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\MyBundle\Form\Model\OrdersM',
'id'=>1,
));
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
var_dump(array_keys($options));
$builder->add('orders', 'entity', array(
'class' => 'AcmeMyBundle:Orders',
'property' => 'name',
'query_builder' => function($repository) use ($options) {
return $repository->createQueryBuilder('o')
->where('o.id='.$options['id'])
->orderBy('o.id', 'ASC')
;
}
));
}
public function getName()
{
return 'orders';
}
}
我有兩個不同的問題。當我把選擇陣列中的車控制器 陣列(「ID」 => 1)
我recive以下錯誤:
The option "id" does not exist. Known options are: "action", "attr", "auto_initialize", "block_name", "by_reference", "cascade_validation", "compound", "constraints", "csrf_field_name", "csrf_message", "csrf_protection", "csrf_provider", "csrf_token_id", "csrf_token_manager", "data", "data_class", "disabled", "empty_data", "error_bubbling", "error_mapping", "extra_fields_message", "inherit_data", "intention", "invalid_message", "invalid_message_parameters", "label", "label_attr", "mapped", "max_length", "method", "pattern", "post_max_size_message", "property_path", "read_only", "required", "translation_domain", "trim", "validation_groups", "virtual"
喜歡的選項的缺省選項的聲明中未聲明解析器。
而且當然啦,當我嘗試在query_builder功能我得到以下錯誤使用$選項陣列上的鍵$選項[「身份證」]:
Notice: Undefined index: id in ****/Form/Type/ListOrdersType.php line 56
是OFC是這一個:
->where('o.id='.$options['id'])
id $選項是ony之一,但我真的需要在EntityType.php文件中做我的查詢dinaic跟隨differents參數,我真的需要通過某些方式在選項上傳遞它們。
我失蹤了什麼?發送你的時間。
你爲什麼串聯你的價值觀,而不是使用綁定?嘗試使用'setParameter()'。 – sjagr 2014-10-03 13:23:51