本文整理汇总了PHP中Symfony\Component\Form\FormInterface::isRoot方法的典型用法代码示例。如果您正苦于以下问题:PHP FormInterface::isRoot方法的具体用法?PHP FormInterface::isRoot怎么用?PHP FormInterface::isRoot使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symfony\Component\Form\FormInterface
的用法示例。
在下文中一共展示了FormInterface::isRoot方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: buildView
public function buildView(FormView $view, FormInterface $form, array $options)
{
// Actual form root.
if ($form->isRoot() && $view->parent === null) {
if (!$options['jquery_validation']) {
return;
}
$validation_groups = FormHelper::getValidationGroups($form);
$contextBuilder = new FormRuleContextBuilder();
$view->vars['rule_builder'] = $contextBuilder;
$view->vars['rule_builder_children'] = array();
if ($validation_groups === null) {
$validation_groups = array(Constraint::DEFAULT_GROUP);
}
} else {
$rootView = FormHelper::getViewRoot($view);
if (!$this->hasRuleBuilderContext($rootView)) {
return;
}
$contextBuilder = $this->getRuleBuilder($rootView);
$validation_groups = FormHelper::getValidationGroups($form);
}
if ($validation_groups !== null) {
$contextBuilder->addGroup($view, $validation_groups);
}
}
示例2: validate
public function validate(FormInterface $form)
{
if (!$form->isSynchronized()) {
$form->addError(new FormError('The value is invalid'));
}
if (count($form->getExtraData()) > 0) {
$form->addError(new FormError('This form should not contain extra fields'));
}
if ($form->isRoot() && isset($_SERVER['CONTENT_LENGTH'])) {
$length = (int) $_SERVER['CONTENT_LENGTH'];
$max = trim(ini_get('post_max_size'));
switch (strtolower(substr($max, -1))) {
// The 'G' modifier is available since PHP 5.1.0
case 'g':
$max *= 1024;
case 'm':
$max *= 1024;
case 'k':
$max *= 1024;
}
if ($length > $max) {
$form->addError(new FormError('The uploaded file was too large. Please try to upload a smaller file'));
}
}
}
示例3: validate
/**
* Validates the form and its domain object.
*
* @param FormInterface $form A FormInterface instance
*/
public function validate(FormInterface $form)
{
if ($form->isRoot()) {
$mapping = array();
$forms = array();
$this->buildFormPathMapping($form, $mapping);
$this->buildDataPathMapping($form, $mapping);
$this->buildNamePathMapping($form, $forms);
$this->resolveMappingPlaceholders($mapping, $forms);
// Validate the form in group "Default"
// Validation of the data in the custom group is done by validateData(),
// which is constrained by the Execute constraint
if ($form->hasAttribute('validation_constraint')) {
$violations = $this->validator->validateValue($form->getData(), $form->getAttribute('validation_constraint'), self::getFormValidationGroups($form));
} else {
$violations = $this->validator->validate($form);
}
if ($violations) {
foreach ($violations as $violation) {
$propertyPath = $violation->getPropertyPath();
$template = $violation->getMessageTemplate();
$parameters = $violation->getMessageParameters();
$error = new FormError($template, $parameters);
foreach ($mapping as $mappedPath => $child) {
if (preg_match($mappedPath, $propertyPath)) {
$child->addError($error);
continue 2;
}
}
$form->addError($error);
}
}
}
}
示例4: getRootFormCascadeOption
/**
* Navigates to the Root form to define if cascading should be done.
*
* @param FormInterface $form
* @return boolean
*/
public function getRootFormCascadeOption(FormInterface $form)
{
if (!$form->isRoot()) {
return $this->getRootFormCascadeOption($form->getParent());
}
return $form->getConfig()->getOption('cascade_filter', false);
}
示例5: interactWith
public function interactWith(FormInterface $form, HelperSet $helperSet, InputInterface $input, OutputInterface $output)
{
if (!$form->isRoot()) {
throw new CanNotInteractWithForm('This interactor only works with root forms');
}
if ($input->isInteractive()) {
throw new CanNotInteractWithForm('This interactor only works with non-interactive input');
}
/*
* We need to adjust the input values for repeated types by copying the provided value to both of the repeated
* fields. We only loop through the top-level fields, since there are no command options for deeper lying fields
* anyway.
*
* The fix was provided by @craigh
*
* P.S. If we need to add another fix like this, we should move this out to dedicated "input fixer" classes.
*/
foreach ($form->all() as $child) {
$config = $child->getConfig();
$name = $child->getName();
if ($config->getType()->getInnerType() instanceof RepeatedType && $input->hasOption($name)) {
$input->setOption($name, [$config->getOption('first_name') => $input->getOption($name), $config->getOption('second_name') => $input->getOption($name)]);
}
}
// use the original input as the submitted data
return $input;
}
示例6: finishView
/**
* {@inheritdoc}
*/
public function finishView(FormView $view, FormInterface $form, array $options)
{
if ($form->isRoot()) {
$view->vars['help'] = 'form.required_fields.help';
$view->children['submit']->vars['label'] = 'form.submit.label';
$view->children['submit']->vars['render_as_action'] = true;
}
}
示例7: getFormErrorMessages
/**
* @param FormInterface $form
* @return array
*/
protected function getFormErrorMessages(FormInterface $form)
{
$errors = [];
foreach ($form->getErrors() as $error) {
if ($form->isRoot()) {
$errors[] = $this->toErrorArray($error);
} else {
$errors[] = $this->toErrorArray($error, $form);
}
}
return $errors;
}
示例8: buildView
/**
* Adds a CSRF field to the root form view.
*
* @param FormView $view The form view
* @param FormInterface $form The form
*/
public function buildView(FormView $view, FormInterface $form)
{
if ($form->isRoot() && $form->hasChildren() && $form->hasAttribute('csrf_field_name')) {
$name = $form->getAttribute('csrf_field_name');
$csrfProvider = $form->getAttribute('csrf_provider');
$intention = $form->getAttribute('csrf_intention');
$factory = $form->getAttribute('csrf_factory');
$data = $csrfProvider->generateCsrfToken($intention);
$csrfForm = $factory->createNamed('hidden', $name, $data, array('property_path' => false));
$view->addChild($csrfForm->createView($view));
}
}
示例9: buildView
/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
if (!$form->isRoot() && isset($options['rules'])) {
$rules = $options['rules'];
$innerType = $form->getConfig()->getType()->getInnerType();
if (($innerType instanceof NumberType || $innerType instanceof IntegerType) && !in_array('numeric', $rules)) {
$rules[] = 'numeric';
}
$ruleParser = new RulesParser($form, $view, $rules);
$attr = $ruleParser->getAttributes();
// Set form attributes based on rules
$view->vars['required'] = in_array('required', $attr);
$view->vars['attr'] += $attr;
}
}
示例10: _getErrors
/**
* Gets all the errors in the current $field and adds them to $_errors, to
* get all errors in the form and its children recursively.
* Also adds display name to error-message.
*
* @param FormInterface $field Field to get Errors from
*/
protected function _getErrors(FormInterface $field)
{
if ($field->getConfig()->getOption('label')) {
$label = $this->_translator->trans($field->getConfig()->getOption('label'));
} else {
$label = ucfirst(trim(strtolower(preg_replace(array('/([A-Z])/', '/[_\\s]+/'), array('_$1', ' '), $field->getName()))));
}
$fieldErrors = array();
foreach ($field->getErrors() as $error) {
// don't show label if error is on the whole form
$fieldErrors[] = $field->isRoot() ? $error->getMessage() : $label . ': ' . $error->getMessage();
}
$this->_errors[] = $fieldErrors;
foreach ($field->all() as $child) {
$this->_getErrors($child);
}
}
示例11: getErrorMessages
protected function getErrorMessages(FormInterface $form)
{
$errors = array();
foreach ($form->getErrors() as $key => $error) {
if ($form->isRoot()) {
$errors[] = '#: ' . $error->getMessage();
} else {
$errors[] = $error->getMessage() . '. ' . implode(', ', $error->getMessageParameters());
}
}
foreach ($form->all() as $child) {
if (!$child->isValid()) {
$errorMessages = $this->getErrorMessages($child);
if (is_array($errorMessages)) {
$errors = array_merge($errors, $errorMessages);
} else {
$errors[] = $child->getName() . ': ' . $errorMessages;
}
}
}
return $errors;
}
示例12: allowDataWalking
/**
* Returns whether the data of a form may be walked.
*
* @param FormInterface $form The form to test.
*
* @return Boolean Whether the graph walker may walk the data.
*/
private static function allowDataWalking(FormInterface $form)
{
$data = $form->getData();
// Scalar values cannot have mapped constraints
if (!is_object($data) && !is_array($data)) {
return false;
}
// Root forms are always validated
if ($form->isRoot()) {
return true;
}
// Non-root forms are validated if validation cascading
// is enabled in all ancestor forms
while (null !== ($form = $form->getParent())) {
if (!$form->getConfig()->getOption('cascade_validation')) {
return false;
}
}
return true;
}
示例13: requiresValidConstraint
private function requiresValidConstraint(FormInterface $form)
{
$formConfig = $form->getConfig();
return !$form->isRoot() && $formConfig->getCompound() && $formConfig->getMapped() && $formConfig->getDataClass() !== null;
}
示例14: resolveDataSource
/**
* Gets the form data to which a property path applies
*
* @param FormInterface $form
* @return object|null
*/
private function resolveDataSource(FormInterface $form)
{
if ($form->isRoot()) {
// Nothing to do if root
$dataForm = $form->getData();
} else {
$dataForm = $form;
while ($dataForm->getConfig()->getDataClass() === null) {
$dataForm = $form->getParent();
}
}
$data = $dataForm->getData();
return array($data, $data === null ? $dataForm->getConfig()->getDataClass() : get_class($data));
}