Skip to content

Override order fields #35

Description

@caudurieau

Evolution

We can't override the fields property "propertyOrder" returned by liform.

Suggestion

Currently this is what I use, it works good if you don't fail the fields order set. But my quick solution has multiple default, like more than one field can have the same position, don't have a lot of time to make a correct solution.

<?php

namespace AppBundle\Liform\Transformer;

use Symfony\Component\Form\FormInterface;
use Limenius\Liform\Transformer\CompoundTransformer as BaseCompoundTransformer;

class CompoundTransformer extends BaseCompoundTransformer
{
    /** {@inheritdoc} */
    public function transform(FormInterface $form, array $extensions = [], $widget = null)
    {
        $data = [];
        $order = 1;
        $required = [];

        foreach ($form->all() as $name => $field) {
            // ...
            if ($field->getConfig()->getOption('liform')
                && isset($field->getConfig()->getOption('liform')['propertyOrder'])
            ) {
                $transformedChild['propertyOrder'] = $field->getConfig()->getOption('liform')['propertyOrder'];
            } else {
                $transformedChild['propertyOrder'] = $order;
                $order ++;
            }
            // ...
        }

        // ...
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions