Dij*_*ark 4 php controller codeigniter helper
我需要在多个控制器中使用一个函数.所以我虽然使用自定义助手,但似乎我无法让它工作.(它在视图中工作,但我需要在控制器中)
它给我以下致命错误:
致命错误:在第12行的/application/controllers/developers.php中调用未定义的方法Developers :: checkIfLoggedIn()
使用帮助程序在多个控制器中使用函数是一个聪明的举动,或者我应该这样做.
马克,先谢谢你
编辑:
控制器文件:
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Developers extends CI_Controller
{
public function __construct()
{
parent::__construct()
$this->load->helper('form');
$this->load->helper('url');
$this->load->helper('login');
//helper function
checkIfLoggedIn($this->session->userdata('loggedIn'));
}
}
Run Code Online (Sandbox Code Playgroud)
助手文件:
if (!defined('BASEPATH')) exit('No direct script access allowed');
if (!function_exists('checkIfLoggedIn'))
{
function checkIfLoggedIn($session_loggedIn)
{
$loggedIn = $session_loggedIn;
if($loggedIn == false)
{
redirect('login/');
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
The*_*pha 17
在你的控制器中你以错误的方式使用它,它不是控制器的方法,所以你不能$this用来调用它.
只要在使用之前加载辅助程序,就可以在控制器功能中的任何位置加载帮助程序(甚至在View文件中,尽管这不是一个好习惯).您可以在控制器构造函数中加载帮助程序,以便它们在任何函数中自动可用,或者您可以在需要它的特定函数中加载帮助程序.
要加载助手,您可以使用
$this->load->helper('name'); // name is the name of the file without extention
Run Code Online (Sandbox Code Playgroud)
与CodeIgniter中的大多数其他系统不同,Helpers不是以面向对象的格式编写的.它们是简单的程序功能.每个辅助函数执行一个特定任务,不依赖于其他函数.
因此,要在控制器中调用辅助函数,您不应该使用
$this->function_name();
Run Code Online (Sandbox Code Playgroud)
改为使用
function_name();
Run Code Online (Sandbox Code Playgroud)
例如,如果在辅助文件中有一个辅助函数,则命名myCustomHelper.php如下
function myHelper()
{
// code
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在控制器中加载它并按如下方式调用它
$this->load->helper('myCustomHelper');
myHelper(); // call the function
Run Code Online (Sandbox Code Playgroud)
但最好在构造函数中加载帮助程序,以便通过整个脚本可以使用它.
更新:如果您的帮助文件的名称是,login_helper.php那么您可以在控制器中使用它,如下所示
$this->load->helper('login_helper');
checkIfLoggedIn($this->session->userdata('loggedIn'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30877 次 |
| 最近记录: |