2010-03-16 64 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

相關問題