41 php methods controller codeigniter
我在我的一个控制器中有这个私有会话,用于检查用户是否已登录:
function _is_logged_in() {
$user = $this->session->userdata('user_data');
if (!isset($user)) {
return false;
}
else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我有多个控制器.如何在其他控制器中使用此功能?在每个控制器中重新定义功能不是很"干".
有任何想法吗?
Ste*_*ran 55
另一种选择是创建一个基本控制器.将函数放在基本控制器中,然后从中继承.
要在CodeIgniter中实现此目的,请在应用程序的libraries文件夹中创建一个名为MY_Controller.php的文件.
class MY_Controller extends Controller
{
public function __construct()
{
parent::__construct();
}
public function is_logged_in()
{
$user = $this->session->userdata('user_data');
return isset($user);
}
}
Run Code Online (Sandbox Code Playgroud)
然后让您的控制器继承此基本控制器.
class X extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function do_something()
{
if ($this->is_logged_in())
{
// User is logged in. Do something.
}
}
}
Run Code Online (Sandbox Code Playgroud)
Roc*_*mat 39
把它放在帮助器中并自动加载它.
助手/ login_helper.php:
function is_logged_in() {
// Get current CodeIgniter instance
$CI =& get_instance();
// We need to use $CI->session instead of $this->session
$user = $CI->session->userdata('user_data');
if (!isset($user)) { return false; } else { return true; }
}
Run Code Online (Sandbox Code Playgroud)
配置/ autoload.php:
$autoload['helper'] = array('login');
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中你可以打电话:
is_logged_in();
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用helper和CodeIgniter构造函数来实现此目的.
您可以在编写函数时创建自定义助手my_helper.php
function is_logged_in() {
$user = $this->session->userdata('user_data');
if (!isset($user)) {
return false;
}
else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)在控制器中,如果它的login.php
class Login extends CI_Controller {
public function __construct()
{
parent::__construct();
if(!is_logged_in()) // if you add in constructor no need write each function in above controller.
{
//redirect you login view
}
}
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
61727 次 |
最近记录: |