17

I am using symfony2 and have a form to save the relation of one user to some rules. These rules are set by the admin user of the company. In this form, after I selected a user to update, I have to select which rule this user have permission.

The problem is that I may have more then one rule with the same name (it's another entity) but the values are different. So, when I build the selectbox I must show the name and the value like:

  1. Quantity of items - 10
  2. Quantity of items - 20
  3. Value of the item - 200
  4. Value of the item - 500

But now I just can show without the "- $value" using the code bellow:

$form = $this->createFormBuilder()->add('myinput', 'entity', array(
                    'class' => 'myBundle:Rule',
                    'property' => 'childEntity.name',
                    'label' => 'Filas Permitidas',
                    'expanded' => false,
                    'multiple' => true,
                    'choices' => $this->getDoctrine()
                            ->getRepository('MyBundle:Rule')
                            ->findAll(),
                    'required' => true,
                ))->getForm();

So, as property I wanted to get $myEntity->getChildEntity()->getName() and the $myEntity->getValue().

Is there some way to do this?

1 Answer 1

32

Yes, define a getUniqueName() method in the entity class like:

public function getUniqueName()
{
    return sprintf('%s - %s', $this->name, $this->value);
}

And edit the property form option:

'property' => 'childEntity.uniqueName',

You also can omit the property option and define the __toString() method same way in order to not repeat the setting of the property option in every form.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.