I use codeigniter.
I get an error when I try to get the parameter in the url
<?php
class Todo extends CI_Controller{
public function __construct() {
parent::__construct();
}
public function index(){
$this->load->view('index.php');
}
public function blog(){
$this->load->view('arsiv');
}
public function test($param){
$this->load->view('test');
$a = $this->uri->segment(2);
}
}
when i try to go : http://localhost/cod/index.php/todo/test/123
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Todo::$uri
Filename: controllers/Todo.php
Line Number: 21
Backtrace:
File: /opt/lampp/htdocs/cod/application/controllers/Todo.php
Line: 21
Function: _error_handler
File: /opt/lampp/htdocs/cod/index.php
Line: 315
Function: require_once
An uncaught Exception was encountered
Type: Error
Message: Call to a member function segment() on null
Filename: /opt/lampp/htdocs/cod/application/controllers/Todo.php
Line Number: 21
Backtrace:
File: /opt/lampp/htdocs/cod/index.php
Line: 315
Function: require_once
Please verify the URL helper is enabled in your config function
try to use $this->uri->get_segment(1);
Try to use
$CI =& get_instance();
$this->CI->uri->segment('2')
you have to load helper in codigniter autoload.php file in config folder
$autoload['helper'] = array('url');
Try to use
codigniter autoload.php file in config folder
$autoload['helper'] = array('url');
Url : http://localhost/laravel/users/abc
$product_id = $this->uri->segment(2);
Result : abc
Read https://www.codeigniter.com/user_guide/libraries/uri.html
Related
I have an error with the following file, and specifically, I assume, the following line:
$data['events'] = $this->homes->get_events();
The error is:
Message: Undefined property: CI_Loader::$homes
I am in the controller file, where I assume the problem is.
File name: /application/controllers/Home.php
$data['events'] = $this->homes->get_events(); <?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller {
public function _construct()
{
parent::_construct();
$this->load->model('homes');
}
public function index()
{
$data['events'] = $this->homes->get_events();
$this->load->view('template/header.php');
$this->load->view('home/index.php', $data);
$this->load->view('template/footer.php');
}
}
There is a model file at models/Homes
We tried changing the name of the model file to 'homes' (lower case) and also the code to 'Homes', but the same error persisted.
Specifically the error on running the url is:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI_Loader::$homes
Filename: controllers/Home.php
Line Number: 15
Backtrace:
File: public_html/anchor/application/controllers/Home.php
Line: 15
Function: _error_handler
File: /public_html/anchor/index.php
Line: 315
Function: require_once
An uncaught Exception was encountered
Type: Error
Message: Call to undefined function file_exits()
Filename: C:\wamp64\www\blog\application\controllers\Pages.php
Line Number: 7
Backtrace:
File: C:\wamp64\www\blog\index.php
Line: 315
Function: require_once
<?php
class Pages extends CI_Controller
{
public function view($page = 'home')
{
if(!file_exits(APPPATH.'views/pages/'.$page.'.php'))
{show_404();}
$data['title'] = ucfirst($page);
$this->load->view('templates/header');
$this->load->view('pages/'.$page,$data);
$this->load->view('templates/footer');
}
}
?>
It's a typo. file_exits() ? It should be file_exists(). Voting to close.
I have controller named "Error" in codeigniter "application/controllers/Error.php".
I used this controller to override default 404 error page through routes.
$route['404_override'] = 'myerror';
But on 404 error occurrence I am getting following error.
A PHP Error was encountered
Severity: Warning
Message: call_user_func_array() expects parameter 1 to be a valid callback, class 'Error' does not have a method 'index'
Filename: core/CodeIgniter.php
Line Number: 514
Backtrace:
File: C:\xampp\htdocs\ci-app\index.php
Line: 292
Function: require_once
But when I rename Error controller to another, it works.
Please help.
You need to change your controller and file name to myerror like,
<?php
//application/controllers/Myerror.php
class Myerror extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->output->set_status_header('404');
$data['content'] = 'error_404'; // Let View name
$this->load->view('index',$data);// loading view
}
}
<?php
class Success_model extends CI_Model
{
function __construct()
{
// Call the Model constructor
parent::__construct();
}
//insert into user table
function get_all()
{
$query = $this->db->get('session'); // = select * from session
return $query->result();
}
}
<?php
class Success extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->helper('url');
$this->load->model('success_model');
}
public function index()
{
$data= $this->Success_model->get_all();
$this->load->view('success_view', $data);
}
}
?>
As You can see this is good, but I have error:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Success::$Success_model
Filename: controllers/success.php
Line Number: 15
Backtrace:
File: C:\xampp\htdocs\session\application\controllers\success.php
Line: 15
Function: _error_handler
File: C:\xampp\htdocs\session\index.php
Line: 292
Function: require_once
Fatal error: Call to a member function get_all() on null in C:\xampp\htdocs\session\application\controllers\success.php on line 15
A PHP Error was encountered
Severity: Error
Message: Call to a member function get_all() on null
Filename: controllers/success.php
Line Number: 15
Backtrace:
I'm looking, and looking, but I dont know what is bad. The good directories are files, other classes are working but this not.
Please help. I'm just tired, because after 2 hours searching mistakes...
For CI v3, afaik
I think I see it:
$data= $this->Success_model->get_all();
Should be:
$data = $this->success_model->get_all(); // Notice the lowercase success_model
PHP variables are case-sensitive where as functions and class names are not.
One more solution would be to change
$this->load->model('success_model');
into
$this->load->model('Success_model');
because then you can use
$data= $this->Success_model->get_all();
A PHP Error was encountered
Severity: Warning
Message: include(../models/loginDao.php): failed to open stream: No such file or directory
Filename: controllers/LoginCon.php
Line Number: 3
Backtrace:
File: C:\wamp\www\xxx\CodeIgniter-3.0.0\application\controllers\LoginCon.php
Line: 3
Function: _error_handler
File: C:\wamp\www\xxx\CodeIgniter-3.0.0\application\controllers\LoginCon.php
Line: 3
Function: include
File: C:\wamp\www\xxx\CodeIgniter-3.0.0\index.php
Line: 292
Function: require_once
But file named loginDao.php existed, in that path specified.
Please help me out as I am new to CodeIgniter
The loading of codeigniter models & controllers, should only have first letter of class and file name upper case
Controller
CodeIgniter User Guide Controllers
File name: Logincon.php
<?php
class Logincon extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('logindao');
}
public function index() {
$data['something'] = $this->logindao->get_somthing();
$this->load->view('login', $data);
}
}
Model
CodeIgniter Userguide Models
File name: Logindao.php
<?php
class Logindao extends CI_Model {
public function get_somthing() {
// Some model code
}
}
Your include method: I would not load models this way.
<?php
include APPPATH . 'models/Logindao.php';
// Or
include FCPATH . `application/models/Logindao.php`;