php 表单提交渲染问题,请问个关于表单渲染的问题,希望能解答一下,谢谢

可以使用 form_theme

详细参考 How to Customize Form Rendering

可以渲染自己的form_div_layout.html.twig

考虑到你的前台和后台css主题不一样 给你一种方案 使用 compass 来修改不同bundle内的 form_div_layout.html.twig:

比如AcmeDemoBundle 在你的Acme\Bundle\DemoBundle\DependencyInjection\Compiler ( 创建目录 Compiler )目录下创建 TwigFormPass.php :

namespace Acme\Bundle\DemoBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;

use Symfony\Component\DependencyInjection\ContainerBuilder;

class TwigFormPass implements CompilerPassInterface

{

public function process(ContainerBuilder $container)

{

$resources = $container->getParameter('twig.form.resources');

$resources[] = 'StoreBackendBundle::form/form_div_layouts.html.twig';

$container->setParameter( 'twig.form.resources' , $resources );

}

}

$resources[] = 'AcmeDemoBundle::form/form_div_layouts.html.twig';

这一行给你的TwigExtension更新了form_div_layout.html.twig

这样你在bundle中渲染的form_widget都会来自于

Acme\Bundle\DemoBundle\Resources\views\form\form_div_layouts.html.twig

然后添加CompilerPass :

在你的

Acme\Bundle\DemoBundle\AcmeDemoBundle.php中加入 build(ContainerBuilder $builder)方法使compiler生效:

namespace Acme\Bundle\DemoBundle;

use Acme\Bundle\DemoBundle\DependencyInjection\Compiler\MenuRenderPass;

use Acme\Bundle\DemoBundle\DependencyInjection\Compiler\TwigFormPass;

use Symfony\Component\DependencyInjection\ContainerBuilder;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class StoreBackendBundle extends Bundle

{

public function build( ContainerBuilder $container)

{

$container->addCompilerPass( new TwigFormPass() );

//add more compiler ...

}

}

最后创建form_theme:

Acme\Bundle\DemoBundle\Resources\views\form\form_div_layouts.html.twig 里面包含了一些form_widget跟form_row , widget attribute视情况加 :

{% block form_row -%}

{{- form_errors(form) -}}

{{- form_label(form) -}}

{{- form_widget(form) -}}

{%- endblock form_row %}

{% block submit_widget -%}

{% set type = type|default('submit') %}

{{- block('button_widget') -}}

{%- endblock submit_widget %}

{% block button_widget -%}

{% if label is empty -%}

{% set label = name|humanize %}

{%- endif -%}

{{ label|trans({}, translation_domain) }}

{%- endblock button_widget %}

{% block form_widget_simple -%}

{% set type = type|default('text') -%}

{%- endblock form_widget_simple %}

{% block textarea_widget -%}

{{ value }}

{%- endblock textarea_widget %}

最后在Twig中试试你的 {% form( form ) %}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值