我在我的一個視圖中有一個函數,我想通過CodeIgniter的數據數組訪問視圖的其中一個可用變量。訪問視圖內的函數中的Codeigniter數據變量
例如;在我的控制器我有這樣的:
$this->load->view('someview', array(
'info' => 'some info'
));
現在,我的觀點中,我有一個功能,我希望能夠從該函數範圍內訪問變量$info
。
這可能嗎?
我在我的一個視圖中有一個函數,我想通過CodeIgniter的數據數組訪問視圖的其中一個可用變量。訪問視圖內的函數中的Codeigniter數據變量
例如;在我的控制器我有這樣的:
$this->load->view('someview', array(
'info' => 'some info'
));
現在,我的觀點中,我有一個功能,我希望能夠從該函數範圍內訪問變量$info
。
這可能嗎?
我試過,但在我看來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
傳遞的變量。
你說得對。我誤讀了帖子,並刪除了我的答案。我想你的回答是正確的。 – Sukumar
在你的控制器:
$GLOBALS['var_available_in_function'] = $value;
您的功能:
function get_var() {
global $var_available_in_function;
return $var_available_in_function;
}
我解決了這個由視圖中創建一個全局變量,然後分配在$數據值傳遞給全局變量。這樣,信息可以在視圖的函數中讀取,而不必將變量傳遞給函數。
例如,在控制器中,您有:
$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();
希望這有助於!
看到沒有理由不,應該就像使用助手一樣。 – simnom
@simnom:不像Javascript,它有一個作用域查找鏈(如果在本地作用域中找不到變量,它在作用域鏈中查找更高),PHP只能使用局部變量或全局變量。因此,暴露給視圖的變量在函數內部不可用。 –
那麼爲什麼不把該變量傳遞給函數。您有權訪問$ info,只需將它傳遞給function_name($ info)即可。 – simnom