我有一个Symfony 2项目,Doctrine为某些数据库实体生成了CRUD(由'app / console doctrine:generate:crud'生成)。在我的具体情况下,我有像TariffMc,TariffMcServiceMcRelation这样的实体。一个TariffMc实体可以属于许多TariffMcServiceMcRelation。
我有一个针对TariffMc的showAction,默认为此操作代码生成。我想列出属于此TariffMc实体的所有TariffMcServiceMsRelation。
我能够对showAction for TariffMc进行一些更改,因此此页面现在呈现TariffMc实体AND所有与此实体TariffMcServiceMcRelation实体相关的内容。我尝试了很多次,但是我无法获得最终结果,我需要:我需要为TariffMc渲染showAction的结果,并且下面必须有与此TariffMc TariffMcServiceMcRelation实体相关的所有内容,并且可以编辑和删除每个TariffMcServiceMcRelation实体。同一页。
所以,我现在拥有的:
我需要的是最终结果,粗略地说:
TariffMc'show'模板:
{% extends 'menu.html.twig' %}
{% block content %}
<h1>TariffMc</h1>
<table class="record_properties" border="1">
<tbody>
<tr>
<th>ID</th>
<td>{{ entity.id }}</td>
</tr>
<tr>
<th>Партнер</th>
<td>{{ entity.user }}</td>
</tr>
<tr>
<th>Хэш</th>
<td>{{ entity.hash }}</td>
</tr>
<tr>
<th>URL для уведомлений о статусах платежей</th>
<td>{{ entity.notificationUrl }}</td>
</tr>
</tbody>
</table>
<ul class="record_actions">
<li>
<a href="{{ path('system_settings_mc_tariffs') }}">
Back to list
</a>
</li>
<li>
<a href="{{ path('system_settings_mc_tariffs_edit', { 'id': entity.id }) }}">
Edit
</a>
</li>
<li>{{ form(delete_form) }}</li>
</ul>
{# Вывод в таблице всех записей из таблицы tariff_mc_service_mc_relation, которые относятся к данному тарифу #}
<h1>TariffMcServiceMcRelation</h1>
{% if relations %}
<table class="records_list" border="1">
<thead>
<tr>
<th>Оператор</th>
<th>ID сервиса</th>
<th>Стандартный успешный ответ на запрос КП</th>
<th>description</th>
<th>Комиссия</th>
<th>Фильтр</th>
</tr>
</thead>
<tbody>
{% for relation in relations %}
<tr>
<td>{{ relation.operator }}</td>
<td>{{ relation.id }}</td>
<td>{{ relation.successMessage }}</td>
<td>{{ relation.description }}</td>
<td>{{ relation.commission }}</td>
<td>{{ relation.filter }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
Нет отчислений для операторов
{% endif %}
<ul>
<li>
<a href="{{ path('system_settings_mc_tariff_mc_service_mc_relation_new') }}">
Create TariffMcServiceMcRelation
</a>
</li>
</ul>
{% endblock %}
TariffMcServiceMcRelation'编辑'模板:
<h1>TariffMcServiceMcRelation edit</h1>
{{ form(edit_form) }}
<ul class="record_actions">
<li>
<a href="{{ path('system_settings_mc_tariff_mc_service_mc_relation') }}">
Back to list
</a>
</li>
<li>{{ form(delete_form) }}</li>
TariffMc showAction:
public function showAction($id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('AppBundle:TariffMc')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find TariffMc entity.');
}
$deleteForm = $this->createDeleteForm($id);
return array(
'entity' => $entity,
'delete_form' => $deleteForm->createView(),
);
}
我需要为TariffMc修改 showAction()以及为TariffMc修改显示模板,以便获得我需要的结果?
答案 0 :(得分:0)
为什么要尝试制作混合节目/编辑页面?显示应该只显示数据,编辑应该只编辑数据。
执行您要做的事情的功能已经存在: https://sonata-project.org/bundles/admin/master/doc/reference/form_types.html#sonata-type-collection
在configureFormFields中:
$formBuilder
->add('foobarRelationName', 'sonata_type_collection', array(),
array(
'edit' => 'inline',
'inline' => 'table',
))
请注意,可通过此方式编辑许多相关实体会对性能和内存使用产生重大影响。
编辑:我发现奏鸣曲文档难以使用且缺乏信息。试图纠缠奏鸣曲字段类型以你想要的关系工作时,试验和错误以及大量的stackoverflow搜索是你的朋友。