2015-06-07 38 views
3

我想讓我的Wordpress子菜單頁面調用一個從類內部擴展父類的函數。父類預計Object作爲其constructor中的參數。WordPress的add_submenu_page不會使用類對象嗎?

該對象是在父級的構造函數中獲得的,而且目前看起來很好,但是當類稍後運行該方法時,page_form $this->model爲空,我得到Call to a member function get_primary_key() on a non-object。爲什麼?

我通過了一個類參考到wordpress add_submenu_page,這是否在下面的代碼中做錯了什麼?或者我以某種方式構造我的代碼錯誤?

我想要一個類或方法來渲染一個窗體,其他類可以使用和傳遞一個唯一的對象到這個窗體。我不需要幫助創建表單或反對自己,但是我需要一些關於如何進行繼承的指導,最好是面向對象的。

我的父類:

<?php 
class Backend 
{ 
    protected $model; 

    function __construct($model) 
    { 
     $this->model = model; 
     echo $this->model->get_primary_key() // this works fine. returns 'id' as string. 
    } 

    function page_form() 
    { 
     echo $this->model->get_primary_key(); // this gives me error, Call to a member function get_primary_key() on a non-object. 
     // This function should render a form, 
     // using parameters inside $this->model, but its NULL. 
    } 

} 

我的主要插件文件:

<?php 

// ... 

if(is_admin()) { 
    add_action('admin_menu', 'my_plugin_menu'); 
} 

function my_plugin_menu() { 
    add_menu_page(
     'My plugin', // page-title 
     'My plugin', // label 
     'manage_options', 
     'my-plugin-menu', // unique-handle 
     'settings_start' // function 
    ); 

    $bookings = new Bookings(); 
    add_submenu_page( 
     'my-plugin-menu', // parent unique-handle 
     'Add new Booking', // page-title 
     'Add new Booking', // label 
     'manage_options', 
     'my-plugin-menu-add-booking', // submenu unique-handle 
     array(&$bookings, 'page_form') // this is the function to call, defined in parent class. 
    ); 

?> 

我的預約類:

<?php 

use WordPress\ORM\Model\BookingModel; 
class Bookings extends Backend 
{ 
    function __construct() 
    { 
     parent::__construct(new BookingModel()); 
    } 

    // ... 

} 

?> 

回答

0

您忘記了Backend構造函數中的$ $模型?

$this->model = $model; 

添加此$的時候,我可以訪問這個 - $>模型 「page_form」

相關問題