Disable ion auth for front end in codeigniter - codeigniter

I've been trying to accomplish this for some time but no results..
I'm using a ion auth in my codeignitor website.
I want to disable ion auth for front end login, and want it to only work for admin side login. is that possible? if yes then how..
my code:
class Login extends MY_Controller {
public function __construct(){
parent::__construct();
$this->load->library('session');
$this->load->helper('url');
require_once APPPATH.'vendor/autoload.php';
}
public function index(){
$this->render('login');
}
}
This generates below error:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI::$ion_auth
Filename: MX/Controller.php
Line Number: 59
Backtrace:
File: D:\xampp\htdocs\moneyclues2\application\third_party\MX\Controller.php
Line: 59
Function: _error_handler
File: D:\xampp\htdocs\moneyclues2\application\core\MY_Controller.php
Line: 126
Function: __get
File: D:\xampp\htdocs\moneyclues2\application\core\MY_Controller.php
Line: 59
Function: _setup
File: D:\xampp\htdocs\moneyclues2\application\controllers\Login.php
Line: 7
Function: __construct
File: D:\xampp\htdocs\moneyclues2\index.php
Line: 316
Function: require_once
when I extend CI_controller. I got below error for render method
Fatal error: Call to undefined method Login::render() in D:\xampp\htdocs\moneyclues2\application\controllers\Login.php on line 15
A PHP Error was encountered
Severity: Error
Message: Call to undefined method Login::render()
Filename: controllers/Login.php
Line Number: 15
Backtrace:

adding ion_auth library $autoload['libraries'] = array('database','ion_auth'); to autoload.php worked for me.
and extended MY_Controller in in place of CI_Controller.

You need to load the Ion_Auth library! $this->load->library('ion_auth');
But if you want it to only be in use for admin-related stuff just make two different MY controllers in core and have your public and admin controllers extend them. Don't autoload Ion_Auth if you only use it in 1/2 of your website.
class MY_Public_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
// load what you need here
}
}
class MY_Admin_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
// load what you need here
$this->load->database();
$this->load->library('session');
$this->load->library('ion_auth');
}
}
Example admin controller:
class Somecontroller extends MY_Admin_Controller {
public function index() {
}
}

Related

CI_Template' not found

I want to load model using
$this->load->model('apotek_data');
function __construct()
{
parent::__construct();
$this->load->model('apotek_data');
$this->template->write_view('sidenavs', 'template/default_sidenavs', true);
$this->template->write_view('navs', 'template/default_topnavs.php', true);
$this->load->database();
}
But when I put it ($this->load->model) in my code, the view doesn't show, and display an error message.
Fatal error: Class 'CI_Template' not found in
D:\wamp64\www\apotek\system\core\Common.php on line 196
What should I do?
Load the template library:
$this->load->library('template');
OR:
In config/autoload.php add template in the libraries array.
I don't know the name of your library so I am assuming it is template if it is not - change it with the name of the library.
For any other person experiencing a 'CI_Template not found' error:
In my case, I was loading a library (in the constructor) with the same name as the controller that was being accessed.
class Authld extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('Authld');
}
}
I had to change the name of the controller for the issue to be resolved.
class Authentication extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('Authld');
}
}
Your Template.php maybe looks like this:
class Template extends MX_Controller{
If so, change the MX to CI (CI_Controller).

Codeigniter Getting an error of

I don't how to solve this error. While using the following controller and views in the CodeIgniter-3.0.0 Version and i change the baseurl also too http://localhost/code/
controllers:
Hello.php
<?php
class Hello extends CI_Controller {
var $name;
var $color;
function Hello()
{
$this->name = 'Andi';
$this->color = 'red';
parent::CI_Controller();
}
function you()
{
$data['name'] = $this->name;
$data['color'] = $this->color;
$this->load->view('you_view',$data);
}
}
?>
View:
you_view.php
Hello You!
<font color="<?=$color ?>"><?=$name?></font>
http://localhost/code/index.php/Hello/you
Got an error:
Fatal error: Call to undefined method CI_Controller::CI_Controller() in E:\phpprogram\code\application\controllers\hello.php on line 9
A PHP Error was encountered
Severity: Error
Message: Call to undefined method CI_Controller::CI_Controller()
Filename: controllers/hello.php
Line Number: 9
Backtrace:
You should extend CI_Controller not Controller in controllers/Hello.php
You need to replace Controller with CI_Controller.
Bookmark to your browser the user guide. It is something you will need to visit quite often. Most things are pretty well explained there.
Try this on your controller:
class Hello extends CI_Controller {
function hello()
{
parent::Controller();
}
function you()
{
$this->load->view('you_view');
}
}

Codeigniter function undefined error

My custom core Class in application/core/MY_Controller.php
class MY_Controller extends CI_Controller{
protected $data = array();
function __construct(){
parent::__construct();
}
function rander_page($view){
//do this to don't repeate in every controller
$this->load->view('includes/header');
$this->load->view('top_menus');
$this->load->view($view, $this->data);
$this->load->view('includes/footer');
}
}
Index Controller in application/controllers
class Index extends MY_Controller{
function __construct(){
parent::__construct();
}
function index(){
$this->render_page('index');
}
}
Error is :Fatal error: Call to undefined method Index::render_page() in D:\wamp\www\ci\application\controllers\index.php on line 10
i am trying to use one controller for all pages help plz
Yes, the error is the clue itself, it has mentioned the function is undefined. You have not defined render_page function. Instead, you misspelled and named it as rander_page().
May be you are trying to write:
function render_page()
as you have called it like :
$this->render_page('index');
You have misspelled the function name. Call $this->rander_page('index');

Codeigniter HMVC Modular Error

I'm new to CI + MX and I tried the Modules::run(); style but I can't seem to let it work.
Here's my directory structure:
/application
-/modules
--/main
---/controllers
----main.php
---/models
---/views
--/connections
---/controllers
----connections.php
---/models
----/group_model.php
---/views
----connection_view.php
main.php controller:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends MX_Controller {
function __construct(){
parent::__construct();
$this->load->helper('url');
}
function index(){
echo modules::run('connections/load_connections');
}
}
?>
connections.php controller:
<?php
class Connections extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->helper('url');
$this->load->model('connections/group_model');
}
function load_connections(){
$user_id = 2;
$data['tabs'] = $this->group_model->get_groups($user_id);
$this->load->view('connection_view', $data);
}
}
?>
group_model.php model:
class Group_model extends CI_Model{
function __construct(){
parent::__construct();
}
/**
* Get all groups in db
**/
function get_groups($user_id){
$this->db->select('g.group_name');
$this->db->from('groups AS g');
$this->db->join('members AS m', 'g.group_id = m.group_id');
$this->db->where('m.user_id', $user_id);
return $this->db->get()->result_array();
}
}
My connection_view.php view contains a div and some php codes to display the $data['tabs'] passed as array in load_connections function.
The problem is, I'm getting an error that says:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Connections::$group_model
Filename: controllers/connections.php
Line Number: 14
and
Fatal error: Call to a member function get_groups() on a non-object in C:\xampp\htdocs\hmvc\application\modules\connections\controllers\connections.php on line 14
I have clearly followed all the instructions provided on MX wiki at https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home
and set up everything as needed.
My database.php under /application/config is already configured.
routes.php is also configured pointing the default controller to main.php
I wonder what I have missed or have done wrong that I can't get it to work.
Codeigniter version: 2.1.3
MX version: 5.4
almost missed it, extend connections with MX_Controller since you are calling modules::run(). Whenever you want a controller to be called with modules::run(), you extend it with MX_Controller instead of CI_Controller
Your second error is caused because of your first error.
Your first error is most likely caused because it cant open the group_model.
try this
$this->load->model('group_model');

CI not loading library

Here's my controller:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('user_model');
}
public function index() {
redirect('user/login');
}
public function login() {
$this->load->library('form_validation', '', 'fv');
var_dump($this);
$this->fv->set_rules('nick_name', 'Nick Name', 'trim|required|max_length[12]|min_length[4]');
$this->fv->set_rules('password', 'Password', 'trim|required|md5');
}
}
?>
I was basically writing a login controller. In the login function, after this I load the view, etc. But up till here, I am getting the following error:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: User::$fv
Filename: controllers/user.php
Line Number: 23
I have commented out everything else in the controller effectively to what I have pasted above. I don't get where the problem is. Thanks.
[EDIT]
On var dumping the $this object, I found an even more unusual thing. The object "fv" was not defined inside the $this object but rather under the $this->user_model object. So isset($this->fv) was returning false and isset($this->user_model->fv) was returning true. And yes I tried $this->load->library('form_validation') instead of naming it "fv", results remained the same.
Your controller name should named as user.php & it should located inside the controllers folder.
Try CI recommended coding styles, such as,
$this->load->library('form_validation');
$this->form_validation->set_rules(); etc..

Resources