我有问题来渲染视图以创建新实体,并且无法在这里找到现有问题,所以我要问... 我的应用程序具有属于一个实体Y的实体X,并且可以具有许多实体Z。
当控制台运行时,它可以很好地执行所有这些关系。
php app\console doctrine:schema:update --force,
在为实体X生成crud之后,列表页面显示正常,但是用于创建新记录的页面在异常之后抛出:
在渲染模板期间抛出了异常 (“警告:call_user_func_array()期望参数1有效 回调,类'Symfony \ Bridge \ Twig \ Extension \ FormExtension'没有 有一个方法'renderer-> humanize' %path_to_app%\程序\缓存\ dev的\树枝\ 16 \ 16033db1d32d7d10db7a0d24db2f49938a4b2e9a63d231d90bf70d1969563fd0.php 第880行,在第232行的form_div_layout.html.twig中。
可能是什么问题?
更新1:
Exception的触发器位于twig文件中,数据从控制器传递。 在 {{form_widget(form)}}
更新2:
//控制器的方法
/**
*
*
* @Route("/new", name="class_new")
* @Template()
*/
public function newAction()
{
$entity = new Class();
$form = $this->createForm(new ClassType(), $entity);
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
//表单类
class ClassType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Admin\MainBundle\Entity\Class'
));
}
public function getName()
{
return 'admin_mainbundle_classtype';
}
}
//查看
<form action="{{ path('class_create') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<p>
<button type="submit">Create</button>
</p>
</form>
答案 0 :(得分:0)
尝试清空缓存:php bin/console cache:clear
并重新运行命令。
如果问题持续存在:如果您使用未定义的函数作为例renderer->humanize
并查看layout.html.twig at line 232.
答案 1 :(得分:0)
我的控制器和视图中没有任何问题。
所以我试着在form_div_layout.html.twig
文件中查找,我发现在那里使用了函数humanize,并且异常表示函数没有被定义。
您可以通过以下方式更新项目:composer install
form_div_layout.html.twig:
{%- block form_label -%}
{% if label is not same as(false) -%}
{% if not compound -%}
{% set label_attr = label_attr|merge({'for': id}) %}
{%- endif -%}
{% if required -%}
{% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
{%- endif -%}
{% if label is empty -%}
{%- if label_format is not empty -%}
{% set label = label_format|replace({
'%name%': name,
'%id%': id,
}) %}
{%- else -%}
{% set label = name|humanize %}
{%- endif -%}
{%- endif -%}
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</label>
{%- endif -%}
{%- endblock form_label -%}
{%- block button_label -%}{%- endblock -%}
答案 2 :(得分:0)