2

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');
}

}

どんな助けもいただければ幸いです=]。

4

2 に答える 2

1

クラス参照とコードを見るとP4A_Data_Source::getPk()、オブジェクトではなく文字列が返されるため、エラーが発生します。デフォルトでは、PKの値は、NULL戻ってきていると推測する値のように見えます。また、このgetPkメソッドはどの引数も受け入れないようです。

これは、別の順序でチェーンすることで修正できます。

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

load()呼び出しによってPKが設定されるため、これは正しいことのように見えます。

于 2012-10-22T15:51:07.617 に答える
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

于 2012-10-26T15:26:02.377 に答える