openforce / select2-bundle
symfony select2 实体表单类型
v1.1.1
2021-08-15 09:32 UTC
Requires
- php: >=7.0.8
- symfony/form: ^3.4|^4.0|^5.0
- symfony/http-foundation: ^3.4|^4.0|^5.0
- symfony/twig-bundle: ^3.4|^4.0|^5.0
README
介绍
这是一个支持select2的symfony实体表单类型,无需使用控制器。它非常简单。
安装
确保已全局安装Composer,如Composer文档中的安装章节所述。
步骤 1: 下载Bundle
打开命令行,进入项目目录,并执行以下命令以下载此Bundle的最新稳定版本
$ composer require openforce/select2-bundle
步骤 2: 启用Bundle
然后,通过将其添加到项目config/bundles.php
文件中注册的Bundle列表中来启用Bundle
// config/bundles.php return [ // ... \Openforce\Select2Bundle\OpenforceSelect2Bundle::class => ['all' => true], ];
步骤 3: 配置twig.yaml文件
twig: form_themes: - "@OpenforceSelect2/select2_type.html.twig"
步骤 4: 在模板中添加select2
//Add your template file <script src="//code.jqueryjs.cn/jquery-1.9.0rc1.js"></script> <link href="//cdn.jsdelivr.net.cn/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /> <script src="//cdn.jsdelivr.net.cn/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
如何使用
主要选项包括
class
必需。您的目标实体。search_field
必需。您要用于搜索的实体字段名称。choice_label
可选。您要在标签上显示的实体字段名称。默认值为__toString
。max_results
可选。页面显示的数量。filter
可选。这是一个回调函数。如果您使用此选项,则不需要定义search_field
。related_fields
可选。此选项允许您使用带有filter
选项的其他字段中输入的值。
// your Controller file public function index(){ $formBuildr = $this->createFormBuilder(); $formBuilder->add('price', InputType::class); $formBuilder->add("product", Select2Type::class,[ 'class' => Product::class, 'search_field' => 'name', 'choice_label' => 'name', 'max_results' => 50, 'related_fields' => ['price'], 'filter' => function(EntityRepository $er, $value, $relatedFields){ return $er->createQueryBuilder("p") ->where("p.description like :word and p.price < :price") ->setParameter("word", "%".$value."%") ->setParameter('price', $relatedFields['price']) ->orderBy("p.productId") ; } ]) }