我正在使用Symfony 2.3.4,当然还有Twig。
现在,我正在尝试将twig的函数path()设置为一个表单的动作,问题是......好吧我不能。
当我运行时:
$('#prof_create').prop('action',"{{ path('profesor_create') }}");
我的目标是这个结果:
<form id="prof_create" class="form-horizontal sf_admin_form_area"
action="/SVN/Symfony/web/app_dev.php/admin/profesor/create" method="post"
{{ form_enctype(form) }}>
是{{path('profesor_create')}} - &gt; /SVN/Symfony/web/app_dev.php/admin/profesor/create
javascript文件显示没有错误或警告,但它确实无法正常工作,因为当我尝试提交表单时: 错误
找不到“POST / admin / profesor /%7B%7B%20path(%27profesor_create%27)%20%7D%7D”的路线
这意味着它没有“转化”
{{ path('profesor_create') }}
进入
/SVN/Symfony/web/app_dev.php/admin/profesor/create
我不想做的是写下js函数中的整个地址,有没有办法完成这个?
先谢谢。
答案 0 :(得分:0)
在浏览器中显示实际的HTML输出之前,会渲染和处理Twig及其变量。
因此,在这种情况下{{path('profesor_create')}}只是另一个字符串,由于它已经运行并且生成了输出,因此不会被Twig引擎处理。
预先渲染您的路线并将其设置在您需要的地方,或者使用像https://github.com/FriendsOfSymfony/FOSJsRoutingBundle这样的javascript路由捆绑包来渲染您的路线以使用它。
答案 1 :(得分:0)
{# ../some.html.twig #}
<form id="prof_create" class="form-horizontal
sf_admin_form_area" action="{{ path('profesorext_create') }}"
method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<div class="form-actions">
<button onclick="before_submit_action()" id="submit_prof" class="btn btn-primary">
<i class="icon-ok"></i> {{'Guardar' | trans}}</button>
<a class="btn" href="{{ path('profesorext') }}">
<i class="icon-ban-circle"></i> {{'Cancelar' | trans }}</a>
</div>
</form>
<script type="text/javascript">
function before_submit_action() {
if(<condition_met>)
$('#prof_create').attr('action',{{ path('profesor_create') }});
else
$('#prof_create').attr('action',{{ path('profesorext_create') }});
}
</script>