2016-12-30 5 views
0

私はGrav CMSには本当に新しく、フォームデータを渡すために外部webapiに投稿要求を行う最良の方法を理解しようとしています。Grav CMSの外部webapiにPHP POSTを実行するには?

通常、私はフォーム提出後に実行され、webapiへの投稿要求を行い、ここで質問を読むPHPコードを持ちます。は、プラグインを使用してすべてのカスタムPHPロジックを分離する必要があると言います。

私は外部のwebapiに私のフォーム投稿要求を行うためにプラグインを使うべきですか?

プラグインを使用して正しい方向に進んでいることを確認したいだけです。

答えて

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. 
    } 
} 
関連する問題