Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模态布局的放置位置以及如何使用动态内容填充模态布局_Javascript_Jquery_Twitter Bootstrap_Zend Framework_Zend Framework2 - Fatal编程技术网

Javascript 模态布局的放置位置以及如何使用动态内容填充模态布局

Javascript 模态布局的放置位置以及如何使用动态内容填充模态布局,javascript,jquery,twitter-bootstrap,zend-framework,zend-framework2,Javascript,Jquery,Twitter Bootstrap,Zend Framework,Zend Framework2,我有以下问题。 我有一个ZF2内置的应用程序。在一些页面中,我得到了一个带有表格信息的网格。每一行都有一个按钮,可以打开一个引导模式,并用动态表单和数据填充它 现在是我的问题。我想有一个简单的模式,没有任何内容可用的地方,并填补它的动态内容。我不想到处定义我的基本模态 我在这个链接中看到了一些信息,但它并没有完全回答我的问题,因为我应该把基本模态布局放在哪里?我这样做的方式。在ZF2默认布局上,我有一个要加载动态数据的模式,我为模式的标题设置了一个变量,为内容设置了一个变量。当用户成功地将数据保

我有以下问题。 我有一个ZF2内置的应用程序。在一些页面中,我得到了一个带有表格信息的网格。每一行都有一个按钮,可以打开一个引导模式,并用动态表单和数据填充它

现在是我的问题。我想有一个简单的模式,没有任何内容可用的地方,并填补它的动态内容。我不想到处定义我的基本模态


我在这个链接中看到了一些信息,但它并没有完全回答我的问题,因为我应该把基本模态布局放在哪里?

我这样做的方式。在ZF2默认布局上,我有一个要加载动态数据的模式,我为模式的标题设置了一个变量,为内容设置了一个变量。当用户成功地将数据保存到数据库时,或者如果保存失败,我使用它向用户提供消息。因此,在我的控制器操作中,当页面加载时,我创建了该消息的会话,并将其发送到布局,请参见下面的示例:

$t_session = new Container('msg');
$t_session->msg = 'Access Denied...';//body
$t->msgheader = 'Warning!';//title
return $this->redirect()->toRoute('users', array());
当用户路由发生重定向时

//seesion modal for access denied
        $mysession="";
        $t_session = new Container('msg');
        $mysession = $t_session->msg;
        unset($t_session->msg);
        $this->layout()->mysession = $mysession;
        if(isset($t_session->msgheader)){
            $mysessiontitle = $t_session->msgheader;
            unset($t_session->msgheader);
            $this->layout()->mysessiontitle = $mysessiontitle;
        }
正如您在上面看到的,我使用

$this->layout()->mysession=$mysession

为了加载模态,我使用这个代码

<?php if($this->mysession != ''){?>

        <script>
            $(window).load(function() {
                $('#idofmodaltoload').modal('show');
            });
        </script>
<?php } ?>

$(窗口)。加载(函数(){
$('#idofmodaltoload').modal('show');
});

因此,如果modal的body msg是从某个操作传递到布局的,因此不是空的,那么我将使用JQuery加载该modal。我希望这能有所帮助。

我的做法是这样的。在ZF2默认布局上,我有一个要加载动态数据的模式,我为模式的标题设置了一个变量,为内容设置了一个变量。当用户成功地将数据保存到数据库时,或者如果保存失败,我使用它向用户提供消息。因此,在我的控制器操作中,当页面加载时,我创建了该消息的会话,并将其发送到布局,请参见下面的示例:

$t_session = new Container('msg');
$t_session->msg = 'Access Denied...';//body
$t->msgheader = 'Warning!';//title
return $this->redirect()->toRoute('users', array());
当用户路由发生重定向时

//seesion modal for access denied
        $mysession="";
        $t_session = new Container('msg');
        $mysession = $t_session->msg;
        unset($t_session->msg);
        $this->layout()->mysession = $mysession;
        if(isset($t_session->msgheader)){
            $mysessiontitle = $t_session->msgheader;
            unset($t_session->msgheader);
            $this->layout()->mysessiontitle = $mysessiontitle;
        }
正如您在上面看到的,我使用

$this->layout()->mysession=$mysession

为了加载模态,我使用这个代码

<?php if($this->mysession != ''){?>

        <script>
            $(window).load(function() {
                $('#idofmodaltoload').modal('show');
            });
        </script>
<?php } ?>

$(窗口)。加载(函数(){
$('#idofmodaltoload').modal('show');
});

因此,如果modal的body msg是从某个操作传递到布局的,因此不是空的,那么我将使用JQuery加载该modal。我希望这能有所帮助。

我将视图辅助程序和部分内容结合使用,尽管我的“动态内容”99%的时间都是表单

视图辅助对象:

class Modal extends AbstractHelper
{
    protected $template = 'base-module/widget/modal';


    public function getTemplate()
    {
        return $this->template;
    }

    public function setTemplate($template)
    {
        $this->template = $template;
    }

    public function setOption($name, $value)
    {
        switch($name) {
            case 'template' :
                $this->setTemplate($value);
            break;
            default :
                parent::setOption($name, $value);
        }
    }

    public function __invoke($title = null, $content, $target)
    {
        if (null !== $title) {
            return $this->render($title, $content, $target);
        }
        return $this;
    }


    public function render($title, $content, $target)
    {
        $partial = $this->getPlugin('partial');

        return $partial($this->template, array(
            'title'   => $title,
            'content' => $content,
            'target'  => $target
        ));
    }

}
模态的默认标记是使用视图脚本路径
$template

<div class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <?php if (! empty($this->title)) : ?>
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title"><?php echo $this->title; ?></h4>
                </div>
            <?php endif; ?>
            <div class="modal-body" data-action="<?php echo $target; ?>">
                <?php echo $this->content; ?>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default modal-close" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary modal-submit">Save changes</button>
            </div>
        </div>
    </div>
</div>
最后,只需在所需的视图脚本中呈现内容

// Create the URL target
$target = $this->url(
  'route/path/name',
   array(),
   array('query' => array('format' => 'json'))
);

// Render the modal using the view helper
echo $this->modal(
    'The modal title',
    $this->form($this->form), // Use the form view helper to set the modal content
    $target
);

虽然我的“动态内容”99%的时间都是表单,但我使用的是视图助手和部分内容的组合

视图辅助对象:

class Modal extends AbstractHelper
{
    protected $template = 'base-module/widget/modal';


    public function getTemplate()
    {
        return $this->template;
    }

    public function setTemplate($template)
    {
        $this->template = $template;
    }

    public function setOption($name, $value)
    {
        switch($name) {
            case 'template' :
                $this->setTemplate($value);
            break;
            default :
                parent::setOption($name, $value);
        }
    }

    public function __invoke($title = null, $content, $target)
    {
        if (null !== $title) {
            return $this->render($title, $content, $target);
        }
        return $this;
    }


    public function render($title, $content, $target)
    {
        $partial = $this->getPlugin('partial');

        return $partial($this->template, array(
            'title'   => $title,
            'content' => $content,
            'target'  => $target
        ));
    }

}
模态的默认标记是使用视图脚本路径
$template

<div class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <?php if (! empty($this->title)) : ?>
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 class="modal-title"><?php echo $this->title; ?></h4>
                </div>
            <?php endif; ?>
            <div class="modal-body" data-action="<?php echo $target; ?>">
                <?php echo $this->content; ?>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default modal-close" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary modal-submit">Save changes</button>
            </div>
        </div>
    </div>
</div>
最后,只需在所需的视图脚本中呈现内容

// Create the URL target
$target = $this->url(
  'route/path/name',
   array(),
   array('query' => array('format' => 'json'))
);

// Render the modal using the view helper
echo $this->modal(
    'The modal title',
    $this->form($this->form), // Use the form view helper to set the modal content
    $target
);

不确定我是否完全清楚您在寻找什么,但似乎您只是想要一些可重用的html+js,对吗?您可以定义一个分部,然后在需要模态对话框的每个视图中渲染分部。它回答了我的部分问题。B/c如何动态加载模态的内容?我会将模态标记/js的通用部分放在partial中,然后使用javascript加载内容。这个数据加载javascript对于使用模式的每个视图都是定制的。我不确定我是否完全清楚你在寻找什么,但看起来你只是想要一些可重用的html+js,对吗?您可以定义一个分部,然后在需要模态对话框的每个视图中渲染分部。它回答了我的部分问题。B/c如何动态加载模态的内容?我会将模态标记/js的通用部分放在partial中,然后使用javascript加载内容。这种数据加载javascript对于您使用模式的每个视图都是定制的。但是通过这种方式,您可以在任何地方使用popuo,即使在您不需要它的地方。我更喜欢使用partialin,而不是为每个需要它的地方编写额外的代码。始终可以使用$controller=$this->params('controller')获取当前控制器;或者当前操作的$action=$this->params('action');。最后,将当前控制器或操作传递给布局,并添加一条if语句,说明模态将弹出到哪个操作或控制器。如果您只想为某些控制器加载模态,请输入IndexController,然后在默认布局上检查用户当前是否在IndexController,如果是,则模态将弹出可用于弹出窗口。如果用户在另一个控制器的操作中,弹出窗口将不可用。但通过这种方式,您可以在任何地方使用popuo,即使在您不需要它的地方。我更喜欢使用partialin,而不是为每个需要它的地方编写额外的代码。始终可以使用$controller=$this->params('controller')获取当前控制器;或者当前操作的$action=$this->params('action');。最后,将当前控制器或操作传递给布局,并添加一条if语句,说明模态将弹出到哪个操作或控制器。如果您只想为某些控制器加载模态,请输入IndexController,然后在默认布局上检查用户当前是否在IndexController,如果是,则模态将弹出可用于弹出窗口。如果用户在另一个控制器的操作中,则弹出窗口不可用。嘿,我将此作为我的链接:但在我的ajax调用完成后,它将进入“完成”函数,但不显示我的模式嘿,我将此作为我的链接:但在我的ajax调用完成后,它将进入“完成”函数,但不显示我的模式