2011-03-27 52 views
0

有一個奇怪的zend框架問題。雖然這很可能很簡單,但至今我一直無法解決它。我已經刮掉了stackOverflow和其他幾個社區站點的底部,以及zend文檔。Zend Framework AjaxLink完全失敗

我包含在我的佈局中的任何ajaxLink都拒絕發揮作用。它們分類正確,哈希佔位符屬於href屬性,但用於激活鏈接的javascript並未包含在頁面中。

echo $this->jQuery;聲明在佈局上也失敗了。可能是ajaxLink失敗的原因。我已經驗證了我在自舉程序中正確添加了jQuery視圖助手。已嘗試使用ZendX_JQuery::enableView($view);$view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");方法。

在此先感謝

摘錄相關的文件如下:

bootstrap.php中:

protected function _initViewHelpers() 
    { 
     $this->bootstrap('layout'); 
     $layout = $this->getResource('layout'); 
     $view = $layout->getView(); 

       $view->doctype('HTML4_STRICT'); 
     $view->headMeta()->appendHttpEquiv('Content-type', 'text/html;charset=utf-8') 
         ->appendName('description', 'Business Club'); 
     $view->headTitle()->setSeparator(' - '); 
     $view->headTitle('SOU Business Club'); 

     $view->setHelperPath(APPLICATION_PATH.'/views/helpers', ''); 
      ZendX_JQuery::enableView($view); 
    } 

dashboardLayout.phtml:

<?php echo $this->doctype();?> 
<html> 
<head> 
<?php echo $this->headTitle();?> 
<?php echo $this->headMeta();?> 
<?php 
    echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/dashboardStyle.css'); 
    echo $this->headLink()->prependStylesheet($this->baseUrl().'/js/jquery/css/smoothness/jquery-ui-1.8.11.custom.css'); 
?> 
<?php 
    echo $this->headScript()->appendFile($this->baseUrl().'/js/paginator.js'); 
    echo $this->jQuery(); 
?> 
</head> 
<body id="body"> 
<div id="wrapper"> 
<div><?php include "dashboardHeader.phtml"; ?></div> 
<div id="bar"> 
<a href="<?php echo $this->url(array('controller'=>'dashboard', 'action'=>'home'))?>">Dashboard Home</a>| 
<?php 
echo $this->ajaxLink('Club Roster | ', 
     'user/index', 
     array('update' => '#content', 
      'method' => 'post'), 
     array('format' => 'html') 
    ); 
?> 
<a href="<?php echo $this->url(array('controller'=>'gdata', 'action'=>'index'))?>">Google Docs</a>| 
<a href="<?php echo $this->url(array('controller'=>'books', 'action'=>'index'))?>">Book Sale Management</a>| 
</div> 
<div id="content" align="center"> 
<?php 
    echo $this->layout()->content; 
?> 
</div> 
<div id="statusBar"> 
<?php 
    $userData = Zend_Registry::get('userData'); 
    $name = $userData->name; 
    $role = $userData->role; 
    $status = 'Logged in as: '.' Name: '.$name.' Role: '.$role; 

echo $status; 
?> 
<br /> 
<a href="<?php echo $this->url(array('controller'=>'authentication', 'action'=>'logout'))?>">Logout</a> 
</div> 
<div><?php include "dashboardFooter.phtml"; ?></div> 
</div> 
</body> 
</html> 

HTML <head>輸出:

<head> 
<title>SOU Business Club - Member Dashboard</title> 
<meta http-equiv="Content-type" content="text/html;charset=utf-8" > 
<meta name="description" content="Business Club" > 
<link href="/css/dashboardStyle.css" media="screen" rel="stylesheet" type="text/css" > 
<link href="/js/jquery/css/smoothness/jquery-ui-1.8.11.custom.css" media="screen" rel="stylesheet" type="text/css" > 
<link href="/css/dashboardStyle.css" media="screen" rel="stylesheet" type="text/css" > 
<script type="text/javascript" src="/js/paginator.js"></script> 
</head> 

回答

0

在引導程序中,您需要指定jQuery的位置,無論是在本地機器還是CDN。本地使用:

$view->jQuery()->setLocalPath(PATH); 

或者你可以使用一個CDN如谷歌的:http://code.google.com/apis/libraries/devguide.html#jquery

+0

這實際上的,我覺得這個問題如此古怪的原因之一。我試着設置本地路徑到我的jquery安裝。沒有不同。默認路徑是谷歌CDN,所以我也嘗試過。我甚至嘗試明確鏈接谷歌CDN。它包含在顯式鏈接中,但zend不會爲ajaxlinks生成js。我可以自己寫js,但這會破壞使用zend庫的目的。 – madhouse 2011-03-28 16:08:49

+0

只要我在加載的視圖中使用jquery助手,jquery鏈接會回顯到輸出的頭部。我的數據網格被加載。有用。我的解決方案是創建一個填充了我的ajaxLinks的部分視圖,該視圖加載到佈局中,而不是佈局本身的一部分。有沒有另一種方法來解決這個奇怪的ZF特質? – madhouse 2011-03-28 20:12:17

+0

好吧,所以部分視圖助手不會工作。 ZF jQuery幫助器只有在內容視圖中直接使用時纔是有效的。必須有解決方法 – madhouse 2011-03-28 20:36:14