Ajax and Ajax Frameworks

I have been a developer for nearly 20 years and a web developer for about 10 years. Over the years, I have considered creating a blog to share the things I have learned (and am learning) about web design and development, but I never seemed to have the time. When I began learning about web development using Ajax and Ajax Frameworks, I decided to take the time to create this blog.

My intention for this blog is to focus primarily on Ajax Frameworks, but since web development requires knowledge of many technologies, I will occasionally write about things such as CSS, Javascript, PHP, MySQL, Flash, etc.

Lately, I have been using JQuery as my primary Ajax tool. Although I have used other Ajax Frameworks in the past (Dojo Toolkit, Yahoo! User Interface Library, Scriptaculous/Prototype), JQuery has thus far been the easiest to learn. In my first few posts I will discuss some of the JQuery Plugins that I have created. Some of these include: a plugin for Google Maps (jquery.imGoogleMaps), Form validation and submission  (jquery.imValidateForm), Page Populater (jquery.imPagePopulate), and a plugin to create lists (jquery.imList).

While I am still learning about some of the other Ajax Frameworks, I hope that what I have learned will be helpful to others. Just remember, “When you can pull the pebbles from my hand…”

Share

CodeIgniter: Call to a member function on a non-object

Monday, June 15th, 2009

I recently ran into a problem using CodeIgniter where I kept receiving the error: “Call to a member function on a non-object”. This problem occurred when I was trying to use a method from one model from within another model.

I have a model named mGalleryImages. Within this model, I have a method named addGalleryImages. Within this method, I load another model and tried to call a method from the loaded model:

function addGalleryImages(){
     ...
     $this->load->model('mUtilImages');
     ...
     $this->mUtilImages->setImageFile($_FILES['uploadFile']);
}

I receive the error when the setImageFile method is called. The problem is that when the model sees “$this”, it is looking for a method within the mGalleryImages model. The solution was to use a CodeIgniter function named get_instance().

function addGalleryImages(){
     ...
     $CI =& get_instance();
     $this->load->model('mUtilImages');
     ...
     $CI->mUtilImages->setImageFile($_FILES['uploadFile']);
}

Easy enough, but I would never have thought that this was the problem. I played with this code for hours, trying to figure out why it didn’t work similarly to a regular PHP class. But now I know.

Share

13 Responses to “CodeIgniter: Call to a member function on a non-object”

  • anata_arie Says:

    Hi, I’ve try your solution to use $CI = & get_instance();
    but it didn’t work too. Have you another solution?
    Thanks

  • admin Says:

    I need more information. Can u send me code snippets and let me know exactly where you receive the error?

  • John P. Says:

    I think there is a problem with your code…

    function addGalleryImages(){

    $CI =& get_instance();
    $this->load->model(‘mUtilImages’);

    $CI->mUtilImages->setImageFile($_FILES['uploadFile']);
    }

    Shouldn’t it be:

    $CI->load->model(‘mUtilImages’);

    ?
    .-= John P.´s last blog ..Mouseterpiece Theatre =-.

  • admin Says:

    I copied the code directly from a project that I worked on.

  • Andy Says:

    Hi,

    I had exactly the same problem and this fixed it for me. Many thanks,

    Andy

  • yaro Says:

    Hi,

    I searched a solution for this problem all evening yeaterday and nothing :( . Today i again search and…. it’s work!!! Big big thank’s!:)

  • Dhrubo Says:

    I’ve meet this problem this morning and through your solution I’ve helped much. Thanks.

  • Da BomB Says:

    This also works on view’s.

    When loading a view in a helper function the same error rises. with this solution it should work.

    I think it’s not a best practice, but it will do the job.

  • Pravin Sawant Says:

    Hi All,
    i am also facing the same problem and this solution works for me

    Thanks

  • liaqat ali Says:

    Hi All, I am Developing a web site. my below code work perfectly. but i have a problem i want “$statsid” above the second foreach, i want to pass this as variable or id to controller to get the data from table where equls to this “$statsid”

    result() as $rows):?>

    <img src="config->item(‘base_url’).$rows->profile_picture_path;?>” />

    user_name;?> description;?>
    <a href="#nogo" id="status_id;?>” class=”image_title” />Comments

    status_id; ?>

    result() as $rs):?>

    <img src="config->item(‘base_url’).$rows->profile_picture_path;?>” />

    user_name;?> status_comment;?>

  • Mahesh Says:

    Hi John,

    Your solution worked for me. Instead of using
    $this->load->model(‘myUtilImages’);
    I have used the below and it works fine
    $CI =& get_instance();
    $CI->load->model(’mUtilImages’);

  • richard frick Says:

    thanks a lot!

  • simelekete Says:

    your solution help me much. thank you

CommentLuv badge