我使用symfony并拥有带有一些实体数组的数组的模板,并且需要在for in
复选框中为所有实体创建,并且在检查了一些实体并单击ready时转到带有ID的操作(来自所有复选框) - 示例 - taskExecution.id
我没有使用带有类型实体的symfony表单,因为taskExecutions
复杂的DTO,从这个DTO我只需要id来发送另一个动作
$taskExecutions = $this->getTaskExecution()
->getTaskExecutionByFilter($form->getData());
return [
'form' => $form->createView(),
'taskExecutions' => $taskExecutions
];
{% for taskExecution in taskExecutions %}
<input class="searchType" type="checkbox" name="SharingNotification" id={{ taskExecution.id }}>
<label class="searchtype2label">{{ taskExecution.id }}</label>
</input>
{% endfor %}
{% javascripts
'@EconomyBundle/Resources/public/js/check-task-executions.js'
filter='?yui_js' combine=true %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
添加js
$('.searchType').click(function() {
alert($(this).attr('id'));
if(this.checked){
$.ajax({
type: "POST",
url: '/manage/outbound_invoices/task_executions/ids',
data: $(this).attr('id'), //--> send id of checked checkbox on other page
success: function(data) {
alert('it worked');
alert(data);
$('#container').html(data);
},
error: function() {
alert('it broke');
},
complete: function() {
alert('it completed');
}
});
}
});
这是我的行动
/**
* give task executions ids for created row.
*
* @Route("/manage/outbound_invoices/task_executions/ids", name="ids_task_executions_")
* @Method({"POST", "GET"})
*/
public function getIdsTaskExecutionsAction(Request $request)
{
$ids = $request->get('ids');
}
我不知道js,请帮忙了解如何获取复选框值(1或0)和实体ID参数并发送到另一个动作
答案 0 :(得分:1)
我认为你不需要javascript。相反,您应该查看how to use a form without data_class
上的Symfony文档您的表单如下:
<?php
class TaskExecutionType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('taskExecution', EntityType::class, array(
'class' => 'AppBundle/TaskExecution',
'expanded' => true,
'multiple' => true
))
->add('submit', SubmitType::class)
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'csrf_protection' => false
));
}
/**
* @return string
*/
public function getName()
{
return 'execution_task_type';
}
}
在你的控制器中:
<?php
/**
* give task executions ids for created row.
*
* @Route("/manage/outbound_invoices/task_executions/ids", name="ids_task_executions_")
* @Method({"POST", "GET"})
*/
public function getIdsTaskExecutionsAction(Request $request)
{
$form = $this->createForm(TaskExecutionType::class, null, array(
'method' => 'POST',
'action' => 'ids_task_executions'
));
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData(); //this will be an array of all the TaskExecution entities you selected
//your own logic
}
return $this->render('template.html.twig', array(
'form' => $form->createView()
));
}