aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Form
diff options
context:
space:
mode:
authorKévin Gomez <contact@kevingomez.fr>2015-10-11 17:30:58 +0200
committerKévin Gomez <contact@kevingomez.fr>2015-11-11 16:23:49 +0100
commitf19f9f62d13c62f18884e8bd0fa67403e8cad8d7 (patch)
tree016d04e5bcf4c07423b440f8bab3b78086c84d07 /src/Wallabag/CoreBundle/Form
parentac9fec610a6485b39c856d9cb7d263ce8c5f1223 (diff)
downloadwallabag-f19f9f62d13c62f18884e8bd0fa67403e8cad8d7.tar.gz
wallabag-f19f9f62d13c62f18884e8bd0fa67403e8cad8d7.tar.zst
wallabag-f19f9f62d13c62f18884e8bd0fa67403e8cad8d7.zip
Add a form to create tagging rules
Diffstat (limited to 'src/Wallabag/CoreBundle/Form')
-rw-r--r--src/Wallabag/CoreBundle/Form/DataTransformer/StringToListTransformer.php49
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php38
2 files changed, 87 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Form/DataTransformer/StringToListTransformer.php b/src/Wallabag/CoreBundle/Form/DataTransformer/StringToListTransformer.php
new file mode 100644
index 00000000..332a91b8
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Form/DataTransformer/StringToListTransformer.php
@@ -0,0 +1,49 @@
1<?php
2
3namespace Wallabag\CoreBundle\Form\DataTransformer;
4
5use Doctrine\Common\Persistence\ObjectManager;
6use Symfony\Component\Form\DataTransformerInterface;
7use Symfony\Component\Form\Exception\TransformationFailedException;
8
9class StringToListTransformer implements DataTransformerInterface
10{
11 private $separator;
12
13 public function __construct($separator = ',')
14 {
15 $this->separator = $separator;
16 }
17
18 /**
19 * Transforms a list to a string.
20 *
21 * @param array|null $list
22 *
23 * @return string
24 */
25 public function transform($list)
26 {
27 if (null === $list) {
28 return '';
29 }
30
31 return implode($this->separator, $list);
32 }
33
34 /**
35 * Transforms a string to a list.
36 *
37 * @param string $string
38 *
39 * @return array|null
40 */
41 public function reverseTransform($string)
42 {
43 if (!$string) {
44 return null;
45 }
46
47 return array_filter(array_map('trim', explode($this->separator, $string)));
48 }
49}
diff --git a/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
new file mode 100644
index 00000000..7fbba38a
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Form/Type/TaggingRuleType.php
@@ -0,0 +1,38 @@
1<?php
2
3namespace Wallabag\CoreBundle\Form\Type;
4
5use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\FormBuilderInterface;
7use Symfony\Component\OptionsResolver\OptionsResolver;
8
9use Wallabag\CoreBundle\Form\DataTransformer\StringToListTransformer;
10
11class TaggingRuleType extends AbstractType
12{
13 public function buildForm(FormBuilderInterface $builder, array $options)
14 {
15 $builder
16 ->add('rule', 'text', array('required' => true))
17 ->add('save', 'submit')
18 ;
19
20 $tagsField = $builder
21 ->create('tags', 'text')
22 ->addModelTransformer(new StringToListTransformer(','));
23
24 $builder->add($tagsField);
25 }
26
27 public function configureOptions(OptionsResolver $resolver)
28 {
29 $resolver->setDefaults(array(
30 'data_class' => 'Wallabag\CoreBundle\Entity\TaggingRule',
31 ));
32 }
33
34 public function getName()
35 {
36 return 'tagging_rule';
37 }
38}