PHP Symfony2中的动态内容引导模式对话框

问题描述 投票:0回答:1

我正在使用bootbox来渲染带有symfony 2的表单。因此,当我想动态更改内容时不知所措。

所以这就是我想要的

  1. 我单击了一个按钮,该按钮从模态对话框内部嵌入的控制器中呈现表单
     <button class="btn btn-primary btn-new" data-toggle="modal" data-target="#agregarRonda">
          Add My Entity
        </button>

        <div  style="display: none;"  class="modal fade" id="agregarRonda" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"  aria-hidden="true">
           <div class="modal-dialog">
             <div class="modal-content">
                  <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title" id="myModalLabel">Add my Entity</h4>
                  </div>
                  <div class="modal-body">
                        {% embed "projete:MyEntity:newMyEntity.html.twig"  %}
                        {% endembed %}

                  </div>
            </div>
          </div>
        </div>

2。当我渲染一个表单newMyentity.html.twig时,它具有一个按钮,可以在symfony上的控制器内部重定向到此方法,例如:

public function createMyEntityAction(Request $request)
{
    $user = $this->get('security.context')->getToken()->getUser();
    $entity = new MyEntity();
    $form = $this->createMyEntityForm($entity);
    $form->handleRequest($request);
    if ($form->isValid()) 
    {
         if( ifNotExist( $entity->getDescription() )   )
         {
            //Do the right things
         }
         else{
           /*
            * Return content to the modal dialog and don't hide modal dialog? 
            */ 
         }
    }
}

因此,我调用ifNotExist方法来检查某些内容。如果返回false,我希望将内容发送到模式对话框而不隐藏模式对话框并修改内容。

我该怎么办?

谢谢。

javascript php twitter-bootstrap symfony bootbox
1个回答
1
投票
public function createMyEntityAction(Request $request) { $user = $this->get('security.context')->getToken()->getUser(); $entity = new MyEntity(); $form = $this->createMyEntityForm($entity); if ($request->getMethod()=="POST"){ $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return new Response($entity->getId(),201); } } return $this->render('yourFormTemplate.html.twig', array('form' => $form->createView() ); }

您的实体:

use Symfony\Component\Validator\Constraints as Assert;
...
/**
 * MyEntity
 * @ORM\Entity()
 * @ORM\Table()
 */
class MyEntity
{
    ...
    /**
     * 
     * @Assert\NotBlank(message ="Plz enter the description")
     */
    private $description;
    ...
}

您的JS:

$('#yourAddBtnId').on('click', function(){
    var $modal = $('#yourModalId')
    $.get("yourURL", null, function(data) {
      $modal.find('modal-body').html(data);
    })
    // create the modal and bind the button
    $('#yourModalId').dialog({
      buttons: {
        success: {
          label: "Save",
          className: "btn-success",
          callback: function() {
            that = this;
            var data = {};
            // get the data from your form
            $(that).find('input, textarea').each(function(){
              data[$(this).attr('name')] = $(this).val();
            })
            // Post the data
            $.post( "yourURL", function(data , status) {
                if ( "201" === status){
                  $modal.modal('hide');
                }
                else {
                  $modal.find('modal-body').html(data);
                }      
            });
          }
      }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.