Revert "[Form] added a circular reference safeguard for form type"
This reverts commit ea93e4cafa
.
Conflicts:
src/Symfony/Component/Form/FormBuilder.php
src/Symfony/Component/Form/FormFactory.php
This commit is contained in:
parent
35e8d086ed
commit
eba7dfeb8a
@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of the Symfony package.
|
|
||||||
*
|
|
||||||
* (c) Fabien Potencier <fabien@symfony.com>
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Symfony\Component\Form\Exception;
|
|
||||||
|
|
||||||
use Symfony\Component\Form\FormTypeInterface;
|
|
||||||
|
|
||||||
class CircularReferenceException extends FormException
|
|
||||||
{
|
|
||||||
public function __construct(FormTypeInterface $type, $code = 0, $previous = null)
|
|
||||||
{
|
|
||||||
parent::__construct(sprintf('Circular reference detected in the "%s" type (defined in class "%s").', $type->getName(), get_class($type)), $code, $previous);
|
|
||||||
}
|
|
||||||
}
|
|
@ -13,7 +13,6 @@ namespace Symfony\Component\Form;
|
|||||||
|
|
||||||
use Symfony\Component\Form\Exception\FormException;
|
use Symfony\Component\Form\Exception\FormException;
|
||||||
use Symfony\Component\Form\Exception\UnexpectedTypeException;
|
use Symfony\Component\Form\Exception\UnexpectedTypeException;
|
||||||
use Symfony\Component\Form\Exception\CircularReferenceException;
|
|
||||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,8 +43,6 @@ class FormBuilder extends FormConfig implements \IteratorAggregate, FormBuilderI
|
|||||||
*/
|
*/
|
||||||
private $unresolvedChildren = array();
|
private $unresolvedChildren = array();
|
||||||
|
|
||||||
private $currentLoadingType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The parent of this builder
|
* The parent of this builder
|
||||||
* @var FormBuilder
|
* @var FormBuilder
|
||||||
@ -98,10 +95,6 @@ class FormBuilder extends FormConfig implements \IteratorAggregate, FormBuilderI
|
|||||||
throw new UnexpectedTypeException($type, 'string or Symfony\Component\Form\FormTypeInterface');
|
throw new UnexpectedTypeException($type, 'string or Symfony\Component\Form\FormTypeInterface');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->currentLoadingType && ($type instanceof FormTypeInterface ? $type->getName() : $type) == $this->currentLoadingType) {
|
|
||||||
throw new CircularReferenceException(is_string($type) ? $this->getFormFactory()->getType($type) : $type);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add to "children" to maintain order
|
// Add to "children" to maintain order
|
||||||
$this->children[$child] = null;
|
$this->children[$child] = null;
|
||||||
$this->unresolvedChildren[$child] = array(
|
$this->unresolvedChildren[$child] = array(
|
||||||
@ -211,11 +204,6 @@ class FormBuilder extends FormConfig implements \IteratorAggregate, FormBuilderI
|
|||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setCurrentLoadingType($type)
|
|
||||||
{
|
|
||||||
$this->currentLoadingType = $type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
@ -217,7 +217,6 @@ class FormFactory implements FormFactoryInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
$builder->setTypes($types);
|
$builder->setTypes($types);
|
||||||
$builder->setCurrentLoadingType($type->getName());
|
|
||||||
$builder->setParent($parent);
|
$builder->setParent($parent);
|
||||||
|
|
||||||
foreach ($types as $type) {
|
foreach ($types as $type) {
|
||||||
@ -227,7 +226,6 @@ class FormFactory implements FormFactoryInterface
|
|||||||
$typeExtension->buildForm($builder, $options);
|
$typeExtension->buildForm($builder, $options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$builder->setCurrentLoadingType(null);
|
|
||||||
|
|
||||||
return $builder;
|
return $builder;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user