致命错误:在非对象上调用成员函数load()(P4A应用程序框架)

时间:2012-10-22 14:13:40

标签: php zend-framework

我正在尝试使用P4A应用程序框架制作小部件,并且我有一个反射性的声音代码直到最后一个掩码,这应该使得生成的小部件使用户能够移动到另一个应该执行不同功能的掩码,错误来自代码为的第28行;

->load($this->locations); 

我相信它扩展了课程,但我不确定,任何帮助...其余的代码如下

class main_dashboard_mask extends P4A_Base_Mask
{

public $locations = array(
        array('value'=>'area1','description'=>'area one'),
        array('value'=>'area2','description'=>'area two'),
        array('value'=>'area3','description'=>'area three'),            
        );
public function __construct()
{
    parent::__construct();
    $p4a = p4a::singleton();
    $this->setTitle("Dashboard");

    $this->build('p4a_field','MeetingRooms');
    $this->MeetingRooms->setLabel("This is the meeting room label");
    $this->build('p4a_button', 'continue')
    ->setLabel('Continue?')
    ->implement("onclick", $this, "change");
   $this->build('p4a_field','booking')
    ->setlabel('Viewing?')
    ->setType('checkbox')
    ->setValue(true);
    $this->booking->label->setTooltip('If you are booking a meeting room, check this box');

    $this->build("P4A_Array_Source", "location")
    ->getPk("value")
    ->load($this->locations);
    $this->build('p4a_field','location')
    ->setLabel('location')
    ->setValue('area1')
    ->setType('select')
    ->setSource($this->location)
    ->setWidth(60);
    $this->weight->label->setWidth(60);
    $this->MeetingRooms();
}

private function MeetingRooms()
{
    $this->build('P4A_fieldset', 'widgetframe')
    ->anchor($this->location)
    ->anchorLeft($this->booking)
    ->anchorLeft($this->continue)
    ->setLabel('Meeting Room Bookings');
}

}

任何帮助都会被赞赏=]。

2 个答案:

答案 0 :(得分:1)

从查看类引用和代码,P4A_Data_Source::getPk()返回一个字符串,而不是一个对象,这就是你得到错误的原因。默认情况下,看起来PK的值是NULL,这会猜测你正在回来。此外,getPk方法似乎不接受任何论证。

你可以通过以不同的顺序链接来解决这个问题:

$this->build("P4A_Array_Source", "location")
     ->load($this->locations)
     ->getPk();

这看起来是正确的,因为调用load()会设置PK。

答案 1 :(得分:1)

好的,试试这个,对你来说可能更好。

这是代码:

public function __construct()
{
    parent::__construct();
    $this->setTitle("Dashboard");

    $this->build('p4a_field','MeetingRooms');
    $this->MeetingRooms->setLabel("This is the meeting room label");
    $this->build('p4a_button', 'continue')
    ->setLabel('Continue?')
    ->implement("onclick", $this, "change");

   $this->build('p4a_field','booking')
    ->setlabel('Booking?')
    ->setType('checkbox')
    ->setValue(false);

    $this->booking->label->setTooltip('If you are booking a meeting room, check this box');



    $this->build("p4a_db_source", "login")
    ->setTable("meetingrooms")
    ->load()
    ->firstRow();

    $this->build('p4a_field','location')
    ->setSource($this->login)
    ->setLabel('location')
    ->setType('select')
    ->setSourceValueField("position")
    ->setSourceDescriptionField("MeetingRoom")
    ->setWidth(120);


    $this->build("p4a_fieldset","Book")
    ->anchor($this->location)
    ->anchor($this->booking)
    ->anchor($this->continue)
    ->setLabel('Meeting room bookings');

    $this->display("main",$this->Book);


}


}
祝你好运:) 谢谢你接受我的才华xx