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

Forum
Last Post
Threads / Messages

FounderSim

Member
Member
Joined
Sep 23, 2014
Messages
65
Points
0
Mysidian Dollar
4,975
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
	//
 
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!
 
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 ? =)
 
Re

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{}?
 
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
 
Other such pages Ive seen dont use try.... even though they aim for the same effect.
 
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.
 
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:
<?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($total, 10, "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");	
	}
	
}
?>
 
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");
				}              			
			}
		}
    }
 
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
 
Post #9 is the fix to my problem. I am sharing answers to questions or problems I run across as I edit things in the mysidia script to help other people.
 

Similar threads

Users who are viewing this thread

  • Forum Contains New Posts
  • Forum Contains No New Posts

Forum statistics

Threads
4,277
Messages
33,118
Members
1,602
Latest member
BerrieMilk
BETA

Latest Threads

Latest Posts

Top