是否可以從視圖中調用位於控制器中的函數?CodeIgniter - 從視圖中調用函數
這就是我在我的控制,作爲一個例子
function checkKeyExists($userid, $key){
}
然後我的觀點裏,我有以下
if(checkKeyExists($row->id, $role->key)){
}
但是當我運行它,它說,checkKeyExists不定義。
如果有人能讓我知道我該如何做到這一點,那就太棒了。
是否可以從視圖中調用位於控制器中的函數?CodeIgniter - 從視圖中調用函數
這就是我在我的控制,作爲一個例子
function checkKeyExists($userid, $key){
}
然後我的觀點裏,我有以下
if(checkKeyExists($row->id, $role->key)){
}
但是當我運行它,它說,checkKeyExists不定義。
如果有人能讓我知道我該如何做到這一點,那就太棒了。
視圖並不意味着調用控制器操作。 顛倒你的邏輯,在控制器中調用該函數,並將其設置爲發送給視圖的變量。然後你可以讓if語句在你的視圖模板中檢查這個變量。
如果不爲你工作,也許一個幫手是你所需要的:http://ellislab.com/codeigniter/user-guide/general/helpers.html
你的控制器應通過一組數據,你的看法。
然後,您的視圖可以測試是否設置了某些內容,然後相應地執行操作。
$this->data['my_setting']='value';
$this->load->vars($this->data);
$this->load->view('your_view');
然後在您的視圖:
if(isset($my_setting)){
do something with my_setting
}
像Widox說,我覺得一個助手是最好的出路。 事情是這樣的:
<?php // test_helper.php
if(!defined('BASEPATH')) exit('No direct script access allowed');
function checkKeyExists($userid, $key, $table)
{
$CI =& get_instance();
$query = $CI->db->query("SELECT $keyFROM $table WHERE id = $userid LIMIT 1");
if($query->num_rows() > 0)
{
return true;
}else
{
return false;
}
}
?>
然後你就可以在你的意見自由使用,只需加載在各自的控制器像函數:$ this->負載>幫手(「測試」);.
你可以聲明函數這樣裏面的觀點:
$myfunction = function_that_do_something() {
}
// then call as you want
$myfunction();
的唯一的事情是,你不能存取權限從函數的變量 - >只需將它們傳遞給函數
這種方式是光滑。
@controller method
$obj = array();
$obj['fnc'] = function(){ return 'hello'; };
$this->load->view('your_path', $obj);
@view
echo $fnc();
控制器:
public function xyz(){
$data['controller'] = $this;
$this->load->view('your_view_file',$data);
}
查看:
$controller->xyz();
從調用視圖控制器的功能是不是一個好主意。它違背了MVC的角色。但是你可以從視圖中調用Model函數。關於這個問題的更多答案是vailable here
超過一年過去了,你仍然沒有接受答案...... – 2012-08-16 01:13:41