Ign*_*hez 3 php symfony symfony-3.4
我正在尝试从混乱的 PHP 模板结构(带有许多重复的代码)转移到插槽,以帮助我们在扩展中拥有类似的树枝哲学。
Form/form.html.php 的代码是:
<?php
/**
* @var \Symfony\Bundle\FrameworkBundle\Templating\TimedPhpEngine $view
* @var \Symfony\Bundle\FrameworkBundle\Templating\Helper\FormHelper $formHelper
* @var \Symfony\Component\Templating\Helper\SlotsHelper $slotsHelper
* @var \Symfony\Component\Form\FormView $form
*/
$formHelper = $view['form'];
$slotsHelper = $view['slots'];
?>
<div class="form-wrapper">
<?php $slotsHelper->output('form-start', $formHelper->start($form)) ?>
<?php $slotsHelper->output('form-widget', $formHelper->widget($form)) ?>
<?php $slotsHelper->output('form-end', $formHelper->end($form)) ?>
</div>
Run Code Online (Sandbox Code Playgroud)
另一个模板 Form/Order/form.html.php 的代码是
<?php
/**
* @var \Symfony\Bundle\FrameworkBundle\Templating\TimedPhpEngine $view
* @var \Symfony\Bundle\FrameworkBundle\Templating\Helper\FormHelper $formHelper
* @var \Symfony\Component\Templating\Helper\SlotsHelper $slotsHelper
* @var \Symfony\Component\Form\FormView $form
*/
$formHelper = $view['form'];
$slotsHelper = $view['slots'];
$view->extend(':Form:form.html.php');
$slotsHelper->start('form-widget');
echo $formHelper->widget($form);
$slotsHelper->stop();
Run Code Online (Sandbox Code Playgroud)
在控制器中,我像往常一样渲染表单:
$this->render("Form/Order/form.html.php", ['form' => $orderForm->createView()])
Run Code Online (Sandbox Code Playgroud)
如果我用“返回的字符串”更改这句话,Symfony 只打印这个“返回的字符串”,而不是标题。
表单已正确呈现,但由于某种我无法理解的原因,Symfony 正在打印 HTTP 标头。
谢谢!
好吧,在询问之后我仍在研究它,我终于找到了原因并感谢这篇文章。
我已执行渲染,但render将渲染的模板返回为Response,因此返回 HTTP 标头。renderView只需返回渲染的模板即可。
所以我只需要改变这一行:
$this->render("Form/Order/form.html.php", ['form' => $orderForm->createView()])
Run Code Online (Sandbox Code Playgroud)
到
$this->renderView("Form/Order/form.html.php", ['form' => $orderForm->createView()])
Run Code Online (Sandbox Code Playgroud)
现在,它按预期工作。
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |