Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Form\ChoiceList\Factory;
13
14use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
15use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface;
16use Symfony\Component\Form\ChoiceList\View\ChoiceListView;
17
18/**
19 * Creates {@link ChoiceListInterface} instances.
20 *
21 * @author Bernhard Schussek <bschussek@gmail.com>
22 */
23interface ChoiceListFactoryInterface
24{
25    /**
26     * Creates a choice list for the given choices.
27     *
28     * The choices should be passed in the values of the choices array.
29     *
30     * Optionally, a callable can be passed for generating the choice values.
31     * The callable receives the choice as only argument.
32     * Null may be passed when the choice list contains the empty value.
33     *
34     * @param callable|null $filter The callable filtering the choices
35     *
36     * @return ChoiceListInterface The choice list
37     */
38    public function createListFromChoices(iterable $choices, callable $value = null/*, callable $filter = null*/);
39
40    /**
41     * Creates a choice list that is loaded with the given loader.
42     *
43     * Optionally, a callable can be passed for generating the choice values.
44     * The callable receives the choice as only argument.
45     * Null may be passed when the choice list contains the empty value.
46     *
47     * @param callable|null $filter The callable filtering the choices
48     *
49     * @return ChoiceListInterface The choice list
50     */
51    public function createListFromLoader(ChoiceLoaderInterface $loader, callable $value = null/*, callable $filter = null*/);
52
53    /**
54     * Creates a view for the given choice list.
55     *
56     * Callables may be passed for all optional arguments. The callables receive
57     * the choice as first and the array key as the second argument.
58     *
59     *  * The callable for the label and the name should return the generated
60     *    label/choice name.
61     *  * The callable for the preferred choices should return true or false,
62     *    depending on whether the choice should be preferred or not.
63     *  * The callable for the grouping should return the group name or null if
64     *    a choice should not be grouped.
65     *  * The callable for the attributes should return an array of HTML
66     *    attributes that will be inserted in the tag of the choice.
67     *
68     * If no callable is passed, the labels will be generated from the choice
69     * keys. The view indices will be generated using an incrementing integer
70     * by default.
71     *
72     * The preferred choices can also be passed as array. Each choice that is
73     * contained in that array will be marked as preferred.
74     *
75     * The attributes can be passed as multi-dimensional array. The keys should
76     * match the keys of the choices. The values should be arrays of HTML
77     * attributes that should be added to the respective choice.
78     *
79     * @param array|callable|null $preferredChoices The preferred choices
80     * @param callable|false|null $label            The callable generating the choice labels;
81     *                                              pass false to discard the label
82     * @param array|callable|null $attr             The callable generating the HTML attributes
83     *
84     * @return ChoiceListView The choice list view
85     */
86    public function createView(ChoiceListInterface $list, $preferredChoices = null, $label = null, callable $index = null, callable $groupBy = null, $attr = null);
87}