Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Questions and Supports (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=18)
-   -   Fatal error: Call to a member function setFlags() on a non-object in /class_appcontroller.php (http://www.mysidiaadoptables.com/forum/showthread.php?t=4991)

FounderSim 01-20-2016 09:12 PM

Fatal error: Call to a member function setFlags() on a non-object in /class_appcontroller.php
 
When I access myadopts/add I get this error:
[spoiler]
its driving me crazy!!
[/spoiler]

Fatal error: Call to a member function setFlags() on a non-object in full_path_hidden/class_appcontroller.php on line 192;


So I added two functions.

myadopts.php
Code:

       
//sim edit
        public function add(){
       
                //die("EAT ME");
                $mysidia = Registry::get("mysidia");       
        }
       
//end sim edit

[/code]

my adoptsview.php
Code:

        //
        // Sim Edit
        //
        public function add(){
               
                $mysidia = Registry::get("mysidia");
               
                $document = $this->document;       
               
                $document->setTitle("Do you want to eat me");       
               
                $document->add(new Comment("<br><br>Welcome earthlings...<br>"));

                $eatForm = new Form("eaters", "eater", "post");       


                $eatForm->add(new Button("Eat me if you can", "submit", "submit"));       
               
                $document->add($eatForm);       
        }
       
        //
        // End Sim Edit
        //


Hwona 01-21-2016 03:55 AM

Re
 
Oookay... I'm not exactly great with v1.3.4 or coding, but just to check...
in your adoptsview.php:
$eatForm = new Form("eaters", "eater", "post");
It looks like you're trying to post the form to a page called 'eater' - at least that's how it works with my version.

Try this:
replace $eatForm = new Form("eaters", "eater", "post"); with $eatForm = new Form("eaters", "", "post");

In adoptsview.php, add this to the add function right below $document->setTitle("Do you want to eat me");

if($mysidia->input->post("submit")){
put your "eater" code here?
}

I'm not sure if this is what you were looking for, but I hope it works out for you!

FounderSim 01-22-2016 11:49 PM

Don't believe that was the issue:

Believe the issue is in the constructor of myadopts.php

Code:

if( $this->action != "index"){
                                try{
                                        $this->adopt = new OwnedAdoptable($mysidia->input->get("aid"));       
                                        if($this->adopt->getOwner() != $mysidia->user->username) throw new NoPermissionException("permission");               
                                        $this->image = $this->adopt->getImage("gui");
                                }

if( $this->action != "index"){, if the page isn't index page of myadopts/, it tries to fetch a pet id ? =)

Hwona 01-23-2016 02:49 AM

Re
 
Quote:

Originally Posted by FounderSim (Post 33568)
Don't believe that was the issue:

Believe the issue is in the constructor of myadopts.php

Code:

if( $this->action != "index"){
                                try{
                                        $this->adopt = new OwnedAdoptable($mysidia->input->get("aid"));       
                                        if($this->adopt->getOwner() != $mysidia->user->username) throw new NoPermissionException("permission");               
                                        $this->image = $this->adopt->getImage("gui");
                                }

if( $this->action != "index"){, if the page isn't index page of myadopts/, it tries to fetch a pet id ? =)

Uh... does v.1.3.4 need the try{}?

FounderSim 01-23-2016 09:30 AM

Quote:

Originally Posted by Wallie987 (Post 33569)
Uh... does v.1.3.4 need the try{}?

I don't know. Your asking the wrong guy that question. The try block could be removed, but might turn into bigger issues down the road.

I will either be creating a if elseif then with the $this->action or or just use a separate page. =0

Hwona 01-23-2016 10:34 AM

Other such pages Ive seen dont use try.... even though they aim for the same effect.

FounderSim 01-23-2016 12:20 PM

The try statement is better then using IF statements for error checking/handling. Especially when you need a few blocks of code to check for errors opposed to checking each line 1 by 1 for errors.

Maybe HOF hasn't gotten around to rest of pages.

Hwona 01-26-2016 06:03 PM

Hi! I think I know why this is happening. Are the two codes you posted the entire files, or just a section?
I was a bit confused with this quite some time ago. Did you construct myadopts like this? I suspect that your were missing the "catch" statement in the _construct function.
PHP Code:

<?php

use Resource\Native\Integer;
use 
Resource\Native\String;

class 
MyadoptsController extends AppController{

    const 
PARAM "aid";
    const 
PARAM2 "confirm";
    private 
$adopt;
    private 
$image;

    public function 
__construct(){
        
parent::__construct("member");
        
$mysidia Registry::get("mysidia");
        if(
$this->action != "index"){
            try{
                
$this->adopt = new OwnedAdoptable($mysidia->input->get("aid"));    
                if(
$this->adopt->getOwner() != $mysidia->user->username) throw new NoPermissionException("permission");        
                
$this->image $this->adopt->getImage("gui");
            }
            catch(
AdoptNotfoundException $pne){
                
$this->setFlags("nonexist_title""nonexist");
            }                          
        }
    }
    
    public function 
index(){
        
$mysidia Registry::get("mysidia");
        
$total $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}'")->rowCount();
        
$pagination = new Pagination($total10"myadopts");
        
$pagination->setPage($mysidia->input->get("page"));    
        
$stmt $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}' ORDER BY totalclicks LIMIT {$pagination->getLimit()},{$pagination->getRowsperPage()}");        
        
$this->setField("pagination"$pagination);
        
$this->setField("stmt", new DatabaseStatement($stmt));
    }
    
    public function 
add(){
        
$mysidia Registry::get("mysidia");    
    }
    
}
?>


FounderSim 01-27-2016 01:12 AM

See previous post, what I posted about Wallie.

Code I replaced with mine. I added a $safelist array and checked if in it.
Code:

class MyadoptsController extends AppController{

    const PARAM = "aid";
    const PARAM2 = "confirm";
        private $safelist = array("page1", "page2", "page3");
        private $adopt;
        private $image;

    public function __construct(){
        parent::__construct("member");
                $mysidia = Registry::get("mysidia");

                if(!in_array($this->action, $this->safelist))
                {
                        if( $this->action != "index"){
                                try{
                                        $this->adopt = new OwnedAdoptable($mysidia->input->get("aid"));       
                                        if($this->adopt->getOwner() != $mysidia->user->username) throw new NoPermissionException("permission");               
                                        $this->image = $this->adopt->getImage("gui");
                                }
                                catch(AdoptNotfoundException $pne){
                                        $this->setFlags("nonexist_title", "nonexist");
                                }                                     
                        }
                }
    }


Hwona 01-28-2016 07:21 PM

Quote:

Originally Posted by FounderSim (Post 33591)
See previous post, what I posted about Wallie.

Code I replaced with mine. I added a $safelist array and checked if in it.
Code:

class MyadoptsController extends AppController{

    const PARAM = "aid";
    const PARAM2 = "confirm";
        private $safelist = array("page1", "page2", "page3");
        private $adopt;
        private $image;

    public function __construct(){
        parent::__construct("member");
                $mysidia = Registry::get("mysidia");

                if(!in_array($this->action, $this->safelist))
                {
                        if( $this->action != "index"){
                                try{
                                        $this->adopt = new OwnedAdoptable($mysidia->input->get("aid"));       
                                        if($this->adopt->getOwner() != $mysidia->user->username) throw new NoPermissionException("permission");               
                                        $this->image = $this->adopt->getImage("gui");
                                }
                                catch(AdoptNotfoundException $pne){
                                        $this->setFlags("nonexist_title", "nonexist");
                                }                                     
                        }
                }
    }


Umm, have you tried just checking the page action in the 'if' condition? So... if($this->action != "index" && $this->action != "Page 1"....)
Other than that, I really have no idea as to what could possibly have gone wrong. I'm assuming everything works fine if you revert the file to its original state? :L


All times are GMT -5. The time now is 06:14 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.