2013-10-17 15 views
2

我有我希望有人能夠幫助...Perl的催化劑 - 頁面使用的href鏈接到頁面上的同一站點時,沒有發現

我創建一個應用的催化劑,目前的問題我有一個簡單的登錄頁面,還包含一個「忘記密碼」鏈接。 這完全是可以正常使用,只是當我點擊「忘記密碼」鏈接,應該帶我去,僅僅包含單詞一個全新的HTML頁面「倒黴,你應該記住它。」相反,我得到一個「找不到網頁」的錯誤。

我在做什麼:正確

sub default : Private { 
    my ($self, $c) = @_; 
    $c->forward('login'); 
} 

sub login : Path('/login') { 
    my ($self, $c) = @_; 

    $c->stash->{title} = "Login page"; 
    $c->stash->{page} = "html"; 
    $c->stash->{template} = "login.html"; 
} 

上述工程的所有併產生登錄頁面:

我有一個名爲Login.pm包含以下控制器。

在催化劑根/ login.html文件(以及所有其他位像按鈕)我有以下的代碼,應該讓我鏈接到'忘記密碼'的HTML頁面。

<p><a href="forgotpassword.html">Forgot Password?</a></p> 

根/ forgotpassword.html文件是引用包含以下內容:

<!DOCTYPE html> 
<html> 
<body> 

<h1>Unlucky, you should have remembered it</h1> 

</body> 
</html> 

然而,當我點擊登錄頁面上的「忘記密碼」鏈接它去「 mydomainname/forgotpassword.html」,並說‘找不到網頁’。

我需要創建爲forgotpassword頁面控制器?如果是的話,它需要包含什麼?或者有什麼明顯的我可以忽略?

我新的催化劑,使得你的幫助是非常讚賞,非常感謝

回答

2

最後解決了這個問題,感謝'mikew'將我引用到CPAN上的'服務靜態內容'部分。

的問題是什麼:

使用HTML5代碼下面我引用,需要與催化劑沒有交互工作的一個簡單的HTML 頁面

<p><a href="forgotpassword.html">Forgot Password?</a></p> 

然而,作爲CookbookCatalyst::Plugin::Static::Simple

提到的「默認情況下,以下擴展名不提供(也就是說,他們將通過催化劑處理):TMPL,TT,TT2,HTML ,xhtml。「

」有你可能不希望作爲靜態文件的一些文件類型。這個類別中最重要的是你的原始模板文件。默認情況下,擴展TMPL,TT,TT2,HTML和XHTML文件將通過靜態安全利益忽略::簡單。」

要防止‘找不到網頁’的錯誤(如HTML頁面默認情況下,忽略),你需要做以下內容添加到該MyApp.pm文件,確保您刪除擴展/ s的你不想被忽略(在我的情況的HTML文件)。

MyApp->config(
     static => { 
      ignore_extensions => [ 
       qw/tmpl tt tt2 xhtml/ 
      ], 
     }, 
); 
+0

非常好。感謝您添加您的詳細解決方案。我upvoted。如果您可以接受您自己的答案,您應該 – mikew

+0

沒有公關oblems,感謝您的幫助。會做,不得不等待一天才能夠upvote你自己的答案,謝謝 –

2

我相信你想要做的是確保該文件被擔任了靜態。查看cookbook,確保您配置爲提供靜態文件,而不是通過催化劑發送該請求。

+0

謝謝,您的參考幫助了很多,看到我的答案爲解決方案。 –

相關問題