当前位置: 首页 > 知识库问答 >
问题:

register_rest_route未向我传递回调函数参数

景才英
2023-03-14

我有一个类来注册和执行我的自定义endpoint。

如果我在类之外注册我的endpoint,我可以在回调函数中获取我的endpoint的参数。但是在类内部,参数不会传递

代码如下:

class MYPLUGIN_RestAPI {
    public function __construct() {
        add_action('rest_api_init', array($this, register_routes));
    }

    public function register_routes (){
        register_rest_route (
            'myplugin/v1',
            '/book/(?P<id>[a-z0-9 .\-]+)',
            array(
                'methods' => 'GET',
                'callback' => array($this, "endpoint_book_cb")
            )
        );
    }

    public function endpoint_book_cb($data){
        $result['code'] = 200;
        $result['message'] = "Horrayyy!!!!!!!";
        $result['data'] = $data;

        return $result;
    }
}

new MYPLUGIN_RestAPI();

以下是我运行此终结点时得到的内容

{"code":200,"message":"Horrayyy!!!!!!!","data":{}}

知道为什么吗?

共有1个答案

祁凯泽
2023-03-14

找到解决方案:

  public function wpfm_endpoints_cb(WP_REST_Request $request){
        $result['code'] = 200;
        $result['message'] = "Horrayyy!!!!!!!";
        $result['data'] = $request->get_params();

        return $result;
  }
 类似资料:
  • 问题内容: 我正在尝试将一些参数传递给用作回调的函数,该怎么做? 问题答案: 如果您想要更一般的东西,可以使用arguments变量,如下所示: 但是否则,您的示例可以正常工作(可以在测试器中使用arguments [0]代替回调)

  • 我正在尝试将参数传递给作为参数传递的函数指针。 代码: 我得到了这个错误: 类型"void"的参数与类型"void(*)(wchar_t*,wchar_t*)"的参数不兼容 如何解决此问题以完成我想要实现的目标? 编辑:对不起,不清楚。我实际上试图完成的是将函数注入子进程并传递两个参数(wchar_t*、wchar_t*),以便我可以使用它们。但主函数可以是void或int argc、char**

  • null 或使用数组 然而,在我们的应用程序中,我看到开发人员使用的语法是 请注意,没有array[],但是两个回调函数以逗号分隔的形式传递。这起作用了。只是好奇怎么会?

  • 问题内容: 我需要在Node.JS应用程序中观察少量目录: 问题在于fs.watch仅将文件名传递给回调函数,而没有包括它所在的目录。我是否可以通过某种方式将额外的参数传递给updated()函数,以便它知道文件在哪里? 我认为我正在寻找类似于Python的工具,如果有帮助的话。 问题答案: 您可以使用:

  • 清单2.4中,向std::thread构造函数中的可调用对象,或函数传递一个参数很简单。需要注意的是,默认参数要拷贝到线程独立内存中,即使参数是引用的形式,也可以在新线程中进行访问。再来看一个例子: void f(int i, std::string const& s); std::thread t(f, 3, "hello"); 代码创建了一个调用f(3, "hello")的线程。注意,函数f需

  • 我正在Rails控制器中实现一个webhook回调,并尝试遵循gem附带的rspec测试中使用的方法,以验证从Nexmo传递的签名(请参阅“check\u signature method”测试): https://github.com/Nexmo/nexmo-ruby/blob/master/spec/nexmo/client_spec.rb 在我的Nexmo API设置中,我添加了一个签名秘密