Wordpress add_submenu_page不会使用类对象?

时间:2015-06-07 09:47:50

标签: php wordpress

我正在尝试让我的Wordpress子菜单页面从类中调用一个扩展父类的函数。父类需要def merge(lst_of_lsts): res = [] for sublist in lst_of_lsts: for i, ressublists in enumerate(res): if sublist[1]==ressublists[0]: res[i] += ([sublist[0],ressublists[-1]]) break else: res.append(sublist) return res 作为Object中的参数。

在父的构造函数中收到了对象,到目前为止似乎很好,但是当该类稍后运行时,方法page_form constructor为空,我得到$this->model ..为什么?< / p>

我正在将一个类引用传递给wordpress Call to a member function get_primary_key() on a non-object,这是我在下面的代码中做错了吗?或者我是否以某种方式构造我的代码错误?

我希望有一个呈现表单的类或方法,其他类可以使用并将唯一对象传递给此表单。我不需要帮助创建表单或对象本身,但我需要一些指导如何进行这种继承,最好是面向对象。

我的家长班:

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.
    );

?>

1 个答案:

答案 0 :(得分:0)

你在Backend的构造函数中忘记了$ model?

$this->model = $model;

添加此$时,我可以在“page_form”中访问$ this-&gt;模型