2012-03-05 74 views
0

我試圖建立一個使用MVC的網站,但我一開始就卡住了。PHP函數參數無法正常工作?

在project0 /應用/控制器我有一個pages.php文件,它看起來像:

<?php 

class Pages extends CI_Controller { 

public function view($page = 'home') 
{ 

if (!file_exists('application/views/pages/'.$page.'.php')) 
{ 
    // Whoops, we don't have a page for that! 
    show_404(); 
} 

$data['title'] = ucfirst($page); // Capitalize the first letter 

$this->load->view('templates/header', $data); 
$this->load->view('pages/'.$page, $data); 
$this->load->view('templates/footer', $data); 

} 
} 

和project0 /應用/視圖/頁兩個文件名爲home.php和about.php,含「你好,世界」。

當我想訪問http://project0/index.php/pages/view/about,它給了我404錯誤:它似乎home.php或about.php文件不存在。

有人可以幫我嗎?

回答

1

在您的腳本中,嘗試使用getcwd();,然後根據相對路徑'application/views/pages/'.$page.'.php'仔細檢查(當前工作目錄)的結果。我猜你不會在你認爲你的目錄中尋找你的頁面。

+1

非常感謝。你說得對,我在錯誤的目錄下工作。它現在有效! – saltandpepper 2012-03-05 15:11:56

1

你剛剛解決了你自己的錯誤。您的網頁home.php和about.php位於: project0/application/views

但你發佈的代碼中

project0/application/views/pages/

+0

對不起,我的意思是這兩個文件位於'project0/application/views/pages'中。 – saltandpepper 2012-03-05 15:03:58

+0

我在OP中編輯它。 – saltandpepper 2012-03-05 15:04:38

1

正在尋找他們,我認爲你的代碼是否會發揮作用,取決於您的設置(服務器設置以及實際腳本運行的位置),但您可以使用以下幾種方法之一來使其更加萬無一失。

可以使用GETCWD()函數:

if (!file_exists(getcwd().'application/views/pages/'.$page.'.php')) 

或者你可以在主配置文件定義了一個永久的站點路徑,例如:

$config['path'] = '/home/project0/'; 

...

if (!file_exists($config['path'].'application/views/pages/'.$page.'.php')) 
+0

你說得對,我在'錯誤'目錄下工作。感謝getcwd()它現在可以工作。 – saltandpepper 2012-03-05 15:12:33

1

嘗試指定絕對路徑而不是相對的'application/views/pages/'.$page.'.php' - 它可能無法正常工作。

1

您可能在錯誤的地方檢查了文件,我相信file_exists正在尋找相對於project0/application/controllers的路徑。試試這個:

if (!file_exists('../views/pages/'.$page.'.php')) 
+0

試過了,不起作用... – saltandpepper 2012-03-05 15:06:14

+0

所以你必須使用絕對路徑,就像其他一些答案中所建議的那樣。 – bfavaretto 2012-03-05 15:08:13