add a custom field long choice basic

The `custom field long choice` aim to provide a way to deal with choices
with a big possibilities.

The `custom field long choice` allow :
- to persist different options in the database ;
- each option has a key, a text (translatable string), and eventually a
  parent, and an internal_key
- every key can be activate or not. If the parent is inactivated, all
  childs are inactivated
- the internal key have two purposes :
    - link to an external csv file, with their own key ;
    - add a special class to results, to allow custom layout.

Currently, the field exists, but some elements are missing :

- a script for CSV import
- possibility to select multiple items
- edition of options
- handle of option without parents
- tests are missing
This commit is contained in:
2015-12-11 10:50:39 +01:00
parent 3230659a4b
commit 4f13ec6959
10 changed files with 672 additions and 3 deletions

View File

@@ -0,0 +1,33 @@
Chill\CustomFieldsBundle\Entity\CustomFieldLongChoice\Option:
type: entity
table: custom_field_long_choice_options
repositoryClass: Chill\CustomFieldsBundle\EntityRepository\CustomFieldLongChoice\OptionRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
key:
type: string
length: 15
text:
type: json_array
internalKey:
type: string
length: 50
column: internal_key
active:
type: boolean
default: true
oneToMany:
children:
targetEntity: Chill\CustomFieldsBundle\Entity\CustomFieldLongChoice\Option
mappedBy: parent
manyToOne:
parent:
targetEntity: Chill\CustomFieldsBundle\Entity\CustomFieldLongChoice\Option
inversedBy: children
nullable: true

View File

@@ -107,4 +107,20 @@ services:
calls:
- [setContainer, ["@service_container"]]
tags:
- { name: twig.extension }
- { name: twig.extension }
chill.custom_field.custom_field_long_choice:
class: Chill\CustomFieldsBundle\CustomFields\CustomFieldLongChoice
arguments:
- "@chill.custom_field.custom_field_long_choice_option_repository"
- "@chill.main.helper.translatable_string"
- "@templating"
tags:
- { name: 'chill.custom_field', type: 'long_choice' }
chill.custom_field.custom_field_long_choice_option_repository:
class: Chill\CustomFieldsBundle\EntityRepository\CustomFieldLongChoice\OptionRepository
factory: ["@doctrine", getRepository]
arguments:
- "Chill\CustomFieldsBundle\Entity\CustomFieldLongChoice\Option"