chance
chance

Reputation: 315

How to remove a form label that is not showing in the form file?

I'm working on some form collections from the cookbook, however I have this label that appears and I'm trying to remove this without any luck.

I don't see the code below listed in my forms.

How can I remove this label?

The highlighted in blue label 'Clientphones' is what I'm trying to remove:

enter image description here

This is the label in page info:

enter image description here

ClientPhone form

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('home', 'text');
    $builder->add('office', 'text');
    $builder->add('mobile', 'text');
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Acme\DemoBundle\Entity\ClientPhone',
    ));
}

public function getName()
{
    return 'ClientPhone';
}

Client form

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('firstName', 'text', array(
            'label' => 'First Name'
        ))
        ->add('lastName', 'text', array(
            'label' => 'Last Name'
        ))
        ->add('email', 'text', array(
            'label' => 'E-mail Address'
        ))
        ->add('clientphones', 'collection', array(
            'type'         => new ClientPhoneType(),
            'allow_add'    => true,
            'allow_delete' => true,
            'by_reference' => false,
        ));
}

Twig form

<form class="form" name="client" method="post">

    {{ form_start(form) }}
    {{ form_errors(form) }}

    {{ form_row(form.firstName) }}
    {{ form_row(form.lastName) }}
    {{ form_row(form.email) }}

    <h3>Client Phones</h3>
    <ul style="list-style-type: none;" class="clientphones" data-prototype="{{ form_widget(form.clientphones.vars.prototype)|e }}">
        {% for phone in form.clientphones %}
            <li>{{ form_row(phone.home) }}</li>
            <li>{{ form_row(phone.office) }}</li>
            <li>{{ form_row(phone.mobile) }}</li>
        {% endfor %}
    </ul>
    {{ form_rest(form) }}

    <input type="submit" value="Submit" />

    {{ form_end(form) }}
</form>

Upvotes: 0

Views: 178

Answers (2)

qooplmao
qooplmao

Reputation: 17759

You should set the field to rendered before your {{ form_rest(form) }} so it doesn't try to render everything that has been missed (intentionally or otherwise).

    {% do form.clientphones.setRendered %}
{{ form_rest(form) }}

Upvotes: 1

Anil Gupta
Anil Gupta

Reputation: 2409

Use form_label, form_error, form_widget instead of form_row

e.g.

<div>
    {{ form_label(phone.home) }} // remove or update this if you want to drop or modify the label
    {{ form_errors(phone.home) }}
    {{ form_widget(phone.home) }}
</div>

Upvotes: 0

Related Questions