Как сделать PHP POST для внешнего webapi в Grav CMS?

Я действительно новичок в Grav CMS и пытаюсь выяснить, как лучше всего сделать пост-запрос на внешний веб-интерфейс для передачи данных формы.

Обычно у меня будет PHP-код, который будет выполнен после отправки формы и выполню запрос на публикацию в webapi, читая вопрос здесь. https://getgrav.org/forum#!/getgrav/general:adding-php-code-in-grav говорит, что должен отделить всю пользовательскую логику php с помощью плагинов.

Должен ли я использовать плагины для отправки запроса формы на внешний веб-интерфейс?

Я просто хочу убедиться, что я иду в правильном направлении с плагинами.

0

Решение

Вы можете создать плагин для этого. Вот быстрый пример кода, вы размещаете свою форму на странице примера, которая yoursite.com/my-form-route в этом примере

<?php
namespace Grav\Plugin;

use \Grav\Common\Plugin;

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-from-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.
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]