vendor/symfony/form/FormInterface.php line 21

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Form;
  11. use Symfony\Component\PropertyAccess\PropertyPathInterface;
  12. /**
  13.  * A form group bundling multiple forms in a hierarchical structure.
  14.  *
  15.  * @author Bernhard Schussek <bschussek@gmail.com>
  16.  */
  17. interface FormInterface extends \ArrayAccess, \Traversable, \Countable {
  18.     /**
  19.      * Sets the parent form.
  20.      *
  21.      * @param FormInterface|null $parent The parent form or null if it's the root
  22.      *
  23.      * @return $this
  24.      *
  25.      * @throws Exception\AlreadySubmittedException if the form has already been submitted
  26.      * @throws Exception\LogicException            when trying to set a parent for a form with
  27.      *                                             an empty name
  28.      */
  29.     public function setParent(self $parent null);
  30.     /**
  31.      * Returns the parent form.
  32.      *
  33.      * @return self|null The parent form or null if there is none
  34.      */
  35.     public function getParent();
  36.     /**
  37.      * Adds or replaces a child to the form.
  38.      *
  39.      * @param FormInterface|string|int $child   The FormInterface instance or the name of the child
  40.      * @param string|null              $type    The child's type, if a name was passed
  41.      * @param array                    $options The child's options, if a name was passed
  42.      *
  43.      * @return $this
  44.      *
  45.      * @throws Exception\AlreadySubmittedException if the form has already been submitted
  46.      * @throws Exception\LogicException            when trying to add a child to a non-compound form
  47.      * @throws Exception\UnexpectedTypeException   if $child or $type has an unexpected type
  48.      */
  49.     public function add($child$type null, array $options = []);
  50.     /**
  51.      * Returns the child with the given name.
  52.      *
  53.      * @param string $name The name of the child
  54.      *
  55.      * @return self
  56.      *
  57.      * @throws \OutOfBoundsException if the named child does not exist
  58.      */
  59.     public function get($name);
  60.     /**
  61.      * Returns whether a child with the given name exists.
  62.      *
  63.      * @param string $name The name of the child
  64.      *
  65.      * @return bool
  66.      */
  67.     public function has($name);
  68.     /**
  69.      * Removes a child from the form.
  70.      *
  71.      * @param string $name The name of the child to remove
  72.      *
  73.      * @return $this
  74.      *
  75.      * @throws Exception\AlreadySubmittedException if the form has already been submitted
  76.      */
  77.     public function remove($name);
  78.     /**
  79.      * Returns all children in this group.
  80.      *
  81.      * @return self[]
  82.      */
  83.     public function all();
  84.     /**
  85.      * Returns the errors of this form.
  86.      *
  87.      * @param bool $deep    Whether to include errors of child forms as well
  88.      * @param bool $flatten Whether to flatten the list of errors in case
  89.      *                      $deep is set to true
  90.      *
  91.      * @return FormErrorIterator An iterator over the {@link FormError}
  92.      *                           instances that where added to this form
  93.      */
  94.     public function getErrors($deep false$flatten true);
  95.     /**
  96.      * Updates the form with default model data.
  97.      *
  98.      * @param mixed $modelData The data formatted as expected for the underlying object
  99.      *
  100.      * @return $this
  101.      *
  102.      * @throws Exception\AlreadySubmittedException     If the form has already been submitted
  103.      * @throws Exception\LogicException                if the view data does not match the expected type
  104.      *                                                 according to {@link FormConfigInterface::getDataClass}
  105.      * @throws Exception\RuntimeException              If listeners try to call setData in a cycle or if
  106.      *                                                 the form inherits data from its parent
  107.      * @throws Exception\TransformationFailedException if the synchronization failed
  108.      */
  109.     public function setData($modelData);
  110.     /**
  111.      * Returns the model data in the format needed for the underlying object.
  112.      *
  113.      * @return mixed When the field is not submitted, the default data is returned.
  114.      *               When the field is submitted, the default data has been bound
  115.      *               to the submitted view data.
  116.      *
  117.      * @throws Exception\RuntimeException If the form inherits data but has no parent
  118.      */
  119.     public function getData();
  120.     /**
  121.      * Returns the normalized data of the field, used as internal bridge
  122.      * between model data and view data.
  123.      *
  124.      * @return mixed When the field is not submitted, the default data is returned.
  125.      *               When the field is submitted, the normalized submitted data
  126.      *               is returned if the field is synchronized with the view data,
  127.      *               null otherwise.
  128.      *
  129.      * @throws Exception\RuntimeException If the form inherits data but has no parent
  130.      */
  131.     public function getNormData();
  132.     /**
  133.      * Returns the view data of the field.
  134.      *
  135.      * It may be defined by {@link FormConfigInterface::getDataClass}.
  136.      *
  137.      * There are two cases:
  138.      *
  139.      * - When the form is compound the view data is mapped to the children.
  140.      *   Each child will use its mapped data as model data.
  141.      *   It can be an array, an object or null.
  142.      *
  143.      * - When the form is simple its view data is used to be bound
  144.      *   to the submitted data.
  145.      *   It can be a string or an array.
  146.      *
  147.      * In both cases the view data is the actual altered data on submission.
  148.      *
  149.      * @return mixed
  150.      *
  151.      * @throws Exception\RuntimeException If the form inherits data but has no parent
  152.      */
  153.     public function getViewData();
  154.     /**
  155.      * Returns the extra submitted data.
  156.      *
  157.      * @return array The submitted data which do not belong to a child
  158.      */
  159.     public function getExtraData();
  160.     /**
  161.      * Returns the form's configuration.
  162.      *
  163.      * @return FormConfigInterface The configuration instance
  164.      */
  165.     public function getConfig();
  166.     /**
  167.      * Returns whether the form is submitted.
  168.      *
  169.      * @return bool true if the form is submitted, false otherwise
  170.      */
  171.     public function isSubmitted();
  172.     /**
  173.      * Returns the name by which the form is identified in forms.
  174.      *
  175.      * Only root forms are allowed to have an empty name.
  176.      *
  177.      * @return string The name of the form
  178.      */
  179.     public function getName();
  180.     /**
  181.      * Returns the property path that the form is mapped to.
  182.      *
  183.      * @return PropertyPathInterface|null The property path instance
  184.      */
  185.     public function getPropertyPath();
  186.     /**
  187.      * Adds an error to this form.
  188.      *
  189.      * @param FormError $error
  190.      *
  191.      * @return $this
  192.      */
  193.     public function addError(FormError $error);
  194.     /**
  195.      * Returns whether the form and all children are valid.
  196.      *
  197.      * @throws Exception\LogicException if the form is not submitted
  198.      *
  199.      * @return bool
  200.      */
  201.     public function isValid();
  202.     /**
  203.      * Returns whether the form is required to be filled out.
  204.      *
  205.      * If the form has a parent and the parent is not required, this method
  206.      * will always return false. Otherwise the value set with setRequired()
  207.      * is returned.
  208.      *
  209.      * @return bool
  210.      */
  211.     public function isRequired();
  212.     /**
  213.      * Returns whether this form is disabled.
  214.      *
  215.      * The content of a disabled form is displayed, but not allowed to be
  216.      * modified. The validation of modified disabled forms should fail.
  217.      *
  218.      * Forms whose parents are disabled are considered disabled regardless of
  219.      * their own state.
  220.      *
  221.      * @return bool
  222.      */
  223.     public function isDisabled();
  224.     /**
  225.      * Returns whether the form is empty.
  226.      *
  227.      * @return bool
  228.      */
  229.     public function isEmpty();
  230.     /**
  231.      * Returns whether the data in the different formats is synchronized.
  232.      *
  233.      * If the data is not synchronized, you can get the transformation failure
  234.      * by calling {@link getTransformationFailure()}.
  235.      *
  236.      * If the form is not submitted, this method always returns true.
  237.      *
  238.      * @return bool
  239.      */
  240.     public function isSynchronized();
  241.     /**
  242.      * Returns the data transformation failure, if any, during submission.
  243.      *
  244.      * @return Exception\TransformationFailedException|null The transformation failure or null
  245.      */
  246.     public function getTransformationFailure();
  247.     /**
  248.      * Initializes the form tree.
  249.      *
  250.      * Should be called on the root form after constructing the tree.
  251.      *
  252.      * @return $this
  253.      *
  254.      * @throws Exception\RuntimeException If the form is not the root
  255.      */
  256.     public function initialize();
  257.     /**
  258.      * Inspects the given request and calls {@link submit()} if the form was
  259.      * submitted.
  260.      *
  261.      * Internally, the request is forwarded to the configured
  262.      * {@link RequestHandlerInterface} instance, which determines whether to
  263.      * submit the form or not.
  264.      *
  265.      * @param mixed $request The request to handle
  266.      *
  267.      * @return $this
  268.      */
  269.     public function handleRequest($request null);
  270.     /**
  271.      * Submits data to the form.
  272.      *
  273.      * @param string|array|null $submittedData The submitted data
  274.      * @param bool              $clearMissing  Whether to set fields to NULL
  275.      *                                         when they are missing in the
  276.      *                                         submitted data. This argument
  277.      *                                         is only used in compound form
  278.      *
  279.      * @return $this
  280.      *
  281.      * @throws Exception\AlreadySubmittedException if the form has already been submitted
  282.      */
  283.     public function submit($submittedData$clearMissing true);
  284.     /**
  285.      * Returns the root of the form tree.
  286.      *
  287.      * @return self The root of the tree, may be the instance itself
  288.      */
  289.     public function getRoot();
  290.     /**
  291.      * Returns whether the field is the root of the form tree.
  292.      *
  293.      * @return bool
  294.      */
  295.     public function isRoot();
  296.     /**
  297.      * @return FormView The view
  298.      */
  299.     public function createView(FormView $parent null);
  300. }