form_label - diferenciar option label de item label

31 views
Skip to first unread message

ciro vargas

unread,
Oct 31, 2012, 9:51:17 AM10/31/12
to symfo...@googlegroups.com

estou tentando customizar os forms do twig e to com o problema

os titulos tem estilo diferente das opções, e queria diferenciar isso

existe a variavel compound que diferencia o titulo de um radio group e as options

mas o titulo do textbox tambem é compound então pega o mesmo estilo das options


como posso fazer?

Raphael

unread,
Oct 31, 2012, 10:02:46 AM10/31/12
to symfo...@googlegroups.com
Para qualquer customização do formulário eu escrevo um:

1
2
3
4
5
6
7

{# src/Acme/DemoBundle/Resources/views/Form/fields.html.twig #}
{% block integer_widget %}
    <div class="integer_widget">
        {% set type = type|default('number') %}
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}


http://symfony.com/doc/current/cookbook/form/form_customization.html#method-2-inside-a-separate-template

Nele eu defino como serão todos meus blocks (ex: form_label, form_widget). Tudo com base no blocks do CORE


Pra customizar é só criar o bloco que queira customizar no arquivo fields.html.twig e na sua viu inserir o trecho:


{% form_theme form 'AcmeDemoBundle:Form:fields.html.twig' %}

* Se é isso que você procura mesmo.

2012/10/31 ciro vargas <cirob...@yahoo.com.br>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Symfony Brasil" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/symfony-pt/-/sIa8hX4_ASwJ.
Para postar neste grupo, envie um e-mail para symfo...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para symfony-pt+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/symfony-pt?hl=pt-BR.



--
Raphael Almeida Araújo
Homepage: http://sites.google.com/site/raphoxaraujo

Raphael

unread,
Oct 31, 2012, 10:05:50 AM10/31/12
to symfo...@googlegroups.com
Há vale lembrar para quem não sabe, que existe o tema padrão que foi comentado acima, mas também existe o "DIV layout" (https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig)

O DIV layout pode ser utilizado inserindo o trecho:


{% form_theme form 'form_table_layout.html.twig' %}


2012/10/31 Raphael <raphox...@gmail.com>

ciro vargas

unread,
Oct 31, 2012, 10:21:01 AM10/31/12
to symfo...@googlegroups.com

e você refaz ele todo?

canseira isso, eu extendi e modifiquei onde precisava,

la no form_label() que eu preciso saber se é um titulo ou um option
 
 
 
___
Att. Ciro vargas
Desenvolvedor Web/Mobile
Skype: ciro.vargas
Tel.: +55 61 8512 2992


De: Raphael <raphox...@gmail.com>
Para: symfo...@googlegroups.com
Enviadas: Quarta-feira, 31 de Outubro de 2012 12:05
Assunto: Re: [symfony-pt] form_label - diferenciar option label de item label

Raphael

unread,
Oct 31, 2012, 11:23:09 AM10/31/12
to symfo...@googlegroups.com
Sim, não precisa reescrever todo não. Basta criar o arquivo form_div_layout.html.twig, definir os ajustes necessários reescrevendo apenas os blocks a serem customizados. No final chamar com o form_theme.

2012/10/31 ciro vargas <cirob...@yahoo.com.br>

ciro vargas

unread,
Oct 31, 2012, 11:30:45 AM10/31/12
to symfo...@googlegroups.com

é o que to fazendo, mas quando chega no ultimo call que é o field_label eu tenho que saber se é um label de option ou um label de campo, pra por um estilo diferente sacou?
 
 
 
___
Att. Ciro vargas
Desenvolvedor Web/Mobile
Skype: ciro.vargas
Tel.: +55 61 8512 2992

Enviadas: Quarta-feira, 31 de Outubro de 2012 13:23

Raphael

unread,
Oct 31, 2012, 11:55:03 AM10/31/12
to symfo...@googlegroups.com
Alguns blocos validam a variável 'type':


{% block form_widget_simple %}
{% spaceless %}
    {% set type = type|default('text') %}
    <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{% endspaceless %}
{% endblock form_widget_simple %}

talvez o form_label também tenha essa variável.

2012/10/31 ciro vargas <cirob...@yahoo.com.br>

ciro vargas

unread,
Oct 31, 2012, 11:58:37 AM10/31/12
to symfo...@googlegroups.com

o field label não é uma delas
 
 
 
___
Att. Ciro vargas
Desenvolvedor Web/Mobile
Skype: ciro.vargas
Tel.: +55 61 8512 2992

Enviadas: Quarta-feira, 31 de Outubro de 2012 13:55

Raphael

unread,
Oct 31, 2012, 3:16:49 PM10/31/12
to symfo...@googlegroups.com
Fiz uns testes aqui e a única forma de descobrir através do block qual é o tipo do campo é com a variável 'cache_key'.

Vi aqui no CORE:


            // be rendered differently.
            'cache_key' => $uniqueBlockPrefix . '_' . $form->getConfig()->getType()->getName(),
        ));
    }

Veja no código que existem várias variáveis e nenhuma armazena o 'type' do 'form', só mesmo o 'cache_key' finaliza com ela e a 'block_prefixes' que também armazena em uma de suas posições o tipo do campo (mas seria mais complicado de tratar).

            'compound' => $form->getConfig()->getCompound(),
            'block_prefixes' => $blockPrefixes,
            'unique_block_prefix' => $uniqueBlockPrefix,

Então no seu caso eu faria algo do tipo:

{% block form_label %}
{% if cache_key|slice(-5) == '_text' %}
 <!-- sua implementacao -->
{% endif %}

Acho que é isso. Espero que agora tenha ajudado.

2012/10/31 ciro vargas <cirob...@yahoo.com.br>
Reply all
Reply to author
Forward
0 new messages