2011-08-08 84 views
3

我在我的一個視圖中有一個函數,我想通過CodeIgniter的數據數組訪問視圖的其中一個可用變量。訪問視圖內的函數中的Codeigniter數據變量

例如;在我的控制器我有這樣的:

$this->load->view('someview', array(
    'info' => 'some info' 
)); 

現在,我的觀點中,我有一個功能,我希望能夠從該函數範圍內訪問變量$info

這可能嗎?

+0

看到沒有理由不,應該就像使用助手一樣。 – simnom

+0

@simnom:不像Javascript,它有一個作用域查找鏈(如果在本地作用域中找不到變量,它在作用域鏈中查找更高),PHP只能使用局部變量或全局變量。因此,暴露給視圖的變量在函數內部不可用。 –

+1

那麼爲什麼不把該變量傳遞給函數。您有權訪問$ info,只需將它傳遞給function_name($ info)即可。 – simnom

回答

2

我試過,但在我看來someview.php使用globals不工作..

function func_in_view(){ 
    global $info; 
    print_r ($info); // NULL 
} 

您可能需要通過這作爲一個參數,而不是你的功能,因此它提供給它。

​​

http://codeigniter.com/user_guide/libraries/loader.html
閱讀方法$this->load->vars($array)
但它的目的只是爲了使其可從該控制器的任何功能的任何視圖文件。我試過我的代碼global $info;以上,它仍然無法正常工作。

您可能需要通過將其作爲參數傳遞來解決此問題。
嘗試在您的someview.php =>print "<pre>";print_r($GLOBALS);print "</pre>";中包含此項,並且不包括通過$this->load->view傳遞的變量。

+0

你說得對。我誤讀了帖子,並刪除了我的答案。我想你的回答是正確的。 – Sukumar

4

在你的控制器:

$GLOBALS['var_available_in_function'] = $value; 

您的功能:

function get_var() { 
     global $var_available_in_function; 

     return $var_available_in_function; 
    } 
0

我解決了這個由視圖中創建一個全局變量,然後分配在$數據值傳遞給全局變量。這樣,信息可以在視圖的函數中讀取,而不必將變量傳遞給函數。

例如,在控制器中,您有:

$data['variable1'] = "hello world"; 
$this->load->view('showpage',$data); 
在showpage.php視圖

然後,你必須:

global $local_variable = $variable1; 

function view_function() { 
    global $local_variable; 
    echo $local_variable; 
} 

view_function(); 

希望這有助於!

+0

問題是,如果有很多變量是從數組中生成的,例如用戶的詳細信息,並且希望每個值都位於其自己的變量中,以便通過查看 – MJoraid

+0

「global $ local_variable = $ variable1;」來訪問它,在這裏拋出一個語法錯誤。 – Innovaat