2010-03-16 31 views
0

我正在开发zend框架,PHP和jQuery。有时我正在研究弹出窗口。当任何弹出窗口在屏幕上打开时,我们仍然可以点击弹出窗口后面的网页上的链接,这会导致一些意外的行为。如何禁用弹出窗口后的网页。我看到了一些网页应用程序,其中当弹出窗口出现然后弹出窗口后的网页变黑。Zend/PHP:如何禁用弹出窗口后面的网页?

我已阅读了一些关于此的教程。在每个教程中,链接用于打开一个对话框,并在模板的锚标签中添加一个特殊属性。但我有一个不同的案例,我必须在行动中的某些条件下开放对话。

行动检查后置条件后,像这样:

$form = new Edit_Form(); 
$this->view->form = $form; 
$this->view->form->setAction($this->view->url()); 

$request = $this->getRequest(); 
if ($request->isPost()) { 

    $values = $request->getParams(); 

    if($values['edit']) { 
     $this->view->openEditBox(); 
    } 
} 

现在视图检查,看看它应该打开一个编辑的流行与否:

if($this->openEditBox){ 
    $jsonOutput ['content'] = '<div class="DialogBox" title="Edit">' . $this->form->render() . '</div>'; 
    echo Zend_Json::encode($jsonOutput); 
} 

'content'是我网页上的DIV。 任何想法?谢谢

+0

@Gordon:首先我要实现这个:) – NAVEED 2010-03-16 13:01:57

回答

4

这是通过Javacript完成的,被称​​为Modal Window

您可以通过Dialog component in JQueryUI轻松实现此目的。其他实现是widely available

$('.selector').dialog('option', 'modal', true); 

您可以使用ZendX_JQuery_View_Helper_DialogContainer创建与ZF一个模式对话框。您必须首先启用该库,因为它不是标准分发的一部分。然后你可以使用你查看以下内容:

$this->dialogContainer('foo', 'I am a modal Dialog', array('modal' => true)); 

*注:未与这些助手的工作,所以上面的代码中可能需要调整

dialogContainer用法很简单:

dialogContainer($ ID,$内容,$参数,可以$ attribs):
创建呈现给定content.on ST一对话框artup。如果指定选项'autoOpen'设置为false,则该框不会在加载时显示,但可以通过附加对话框(“打开”)javascript函数显示。有关详细信息,请参阅UI文档。

ZF manual for further information on how to setup and use ZendX_JQuery

+0

确定。我编辑了我的问题。你可以再看一遍吗? – NAVEED 2010-03-17 05:46:04

+0

@NAVEED添加了助手描述。就像我说的:我以前没有和这些帮手合作过。但我会说,答案有你需要的一切来完成它。你应该能够通过一些试验和错误获得你想要的。 – Gordon 2010-03-17 08:18:50

相关问题