如何在GRAV CMS中执行php帖子到外部WebAPI



我真的是GRAV CMS的新手,我正在尝试找出向外部WebAPI进行邮政请求以传递表单数据的最佳方法。

通常,我将拥有表单提交后执行的PHP代码,并将向WebAPI发表邮政请求,在此处阅读一个问题https://getgrav.org/forum#!/格拉夫(Grav)表示应该使用插件将所有自定义PHP逻辑分开。

我应该使用插件对外部Webapi的表单发表请求?

我只想确保我使用插件朝正确的方向前进。

您可以为此构建插件。这是一个快速示例代码,您将表格发布到示例页面,这是此示例中的yoursite.com/my-form-route

<?php
namespace GravPlugin;
use GravCommonPlugin;
class MyAPIPlugin extends Plugin
{
    public static function getSubscribedEvents()
    {
        return [
            'onPluginsInitialized' => ['onPluginsInitialized', 0]
        ];
    }
    public function onPluginsInitialized()
    {
        if ($this->isAdmin())
            return;
        $this->enable([
            'onPageInitialized' => ['onPageInitialized', 0],
        ]);
    }
    public function onPageInitialized()
    {
        // This route should be set in the plugin's setting instead of hard-code here.
        $myFormRoute = 'my-form-route';
        $page = $this->grav['page'];
        $currentPageRoute = $page->route();
        // This is not the page containing my form. Skip and render the page as normal.
        if ($myFormRoute != $currentPageRoute)
            return;
        // This is page containing my form, check if there is submitted data in $_POST and send it to external API.
        if (!isset($_POST['my_form']))
            return;
        // Send $_POST['my_form'] to external API here.
    }
}

最新更新