大佬教程收集整理的这篇文章主要介绍了jquery – 不处理模态中的Symfony2形式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我以模态显示表单时,无论我按哪个按钮,它都不会处理它,但是当我在新选项卡中呈现表单时,所有操作都会正确执行.
奇怪的是,即使在我的代码中,现在禁用了将用户推回到完整资源列表的重定向,当我单击模式按钮时页面仍会刷新.
解:
我需要手动将表单操作添加到模式中的表单,以便它调用正确的控制器操作进行处理.为了达到这个解决方案,没有太多的讨论,所以为了方便他人,我们在这里:
{{ form_start(form,{'action': path('sfi_teacher_manage_resource',{ 'id': resource.id,'action': user_action })}) }}
我的表格类:
<?PHP namespace SFI\MainBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class ManageresourceType extends AbstractType { public function buildForm(FormBuilderInterface $builder,array $options) { $builder ->add('name','text',array( 'required' => true,'attr' => array( 'class' => 'form-control','placeholder' => 'resource name',),)) ->add('type','choice','empty_value' => 'Choose a type','choices' => array('w' => 'Website','v' => 'Video','a' => 'Audio'),)) ->add('link','placeholder' => 'Add a link',)) ->add('description','textarea','attr' => array( 'class' => 'textarea','style' => 'width: 100%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;','placeholder' => 'Write a description...',)) ->add('save','submit',array( 'attr' => array( 'class' => 'btn btn-success',)) ->add('remove',array( 'attr' => array( 'class' => 'btn btn-danger',)); } public function getName() { return 'modifyresource'; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'SFI\MainBundle\Entity\resource',)); } }
我采取此行动的路线:
sfi_teacher_manage_resource: path: /teacher/resource/manage/{action}/{iD} defaults: { _controller: SFIMainBundle:Teacher:manageresource }
我的控制器动作:
public function manageresourceAction($id,$action,request $manage_request) { $logger = $this->get('logger'); $em = $this->getDoctrine()->getManager(); $managedresource = $em->getRepository('SFIMainBundle:resource')->find($id); $logger->info('Started the manage action'); $manageresourceForm = $this->createForm(new ManageresourceType(),$managedresourcE); $logger->info('Loaded managedresourcE into FormType.'); $manageresourceForm->handlerequest($manage_request); if ($manageresourceForm->isValid()) { $logger->info('Form was valid.'); if ($manageresourceForm->get('save')->isClicked()) { $logger->info('Save was clicked,ediTing resource.'); $managedresource->setStatus("1"); $logger->info('Status set to approved.'); $em->persist($managedresourcE); $logger->info('resource was persisted.'); } elseif ($manageresourceForm->get('remove')->isClicked()) { $logger->info('Remove / Decline was clicked'); $em->remove($managedresourcE); $logger->info('resource removed.'); } $em->flush(); $logger->info('Flushing...'); $logger->info("RedirecTing to teacher's resources..."); //return $this->redirect($this->generateUrl('sfi_teacher_resources')); } return $this->render('SFIMainBundle:Teacher:manageresource.html.twig',array( 'user_action' => $action,'form' => $manageresourceForm->createView(),)); }
正如您所看到的,我不得不在某些控制台日志中进行烘焙,以确定操作何时停止工作.
如果我将表单作为新选项卡打开,一切都很好,但不是在模态中.有人向我建议,一些JavaScript可能会妨碍提交按钮正常工作,但我不知道从哪里开始调试.
如果您需要更多信息,请告诉我!
在我的resources.html.twig上,正在加载资源列表,我有几个这样的链接,对于每个实体:
{% if r.status == "0" %} <a href="{{ path('sfi_teacher_manage_resource',{ 'id': r.id,'action': 'review' }) }}" data-target="#manageresource" data-toggle="modal" class="btn btn-info bold" id="review"><i class="fa fa-fw fa-check-circle"></i>Review</a> {% elseif r.status == "1" %} <a href="{{ path('sfi_teacher_manage_resource','action': 'edit' }) }}" data-target="#manageresource" data-toggle="modal" class="btn btn-info" id="edit"><i class="fa fa-fw fa-edit"></i>Edit</a> {% endif %}
模态本身是在同一个模板中预先构建的,因为Symfony在使用Bootstrap模式时需要这样做(之前我使用过模态un SF,这是我在加载数据时能够想到让它们工作的唯一@L_801_16@或表格形式):
<div class="modal fade" id="manageresource" tabindex="-1" role="dialog" aria-labelledby="Manage resource" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> Loading... </div> </div> </div>
一旦检索到对象并将其加载到表单中,modal-content就会被manageresources.html.twig的内容替换:
{{ form_start(form) }} <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> <h4 class="modal-title" id="mymodalLabel">Manage resource</h4> </div> <div class="modal-body"> {{ form_errors(form) }} <div class="form-group"> {{ form_errors(form.Name) }} {{ form_widget(form.Name) }} </div> <div class="form-group"> {{ form_errors(form.typE) }} {{ form_widget(form.typE) }} </div> <div class="form-group"> {{ form_errors(form.link) }} {{ form_widget(form.link) }} </div> {{ form_errors(form.description) }} {{ form_widget(form.description) }} </div> <div class="modal-footer"> <div class="pull-left"> {% if user_action == "review" %} {{ form_widget(form.save,{ 'label': 'Approve' }) }} {{ form_widget(form.remove,{ 'label': 'Decline' }) }} {% elseif user_action == "edit" %} {{ form_widget(form.save,{ 'label': 'Save' }) }} {{ form_widget(form.remove,{ 'label': 'Remove' }) }} {% endif %} </div> <div class="pull-right"> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> </div> </div> {{ form_end(form) }}
那将涵盖此操作中涉及的所有代码.
以上是大佬教程为你收集整理的jquery – 不处理模态中的Symfony2形式全部内容,希望文章能够帮你解决jquery – 不处理模态中的Symfony2形式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。