2016-11-15 3 views
1

私はOctoberCMSを初めて使用しています。OctoberCMSでAPI(Webサービス)を作成

ローカルサーバーに2つのプロジェクトを作成しています。 1つはCakephp(http://localhost/5p_group/)で、もう1つはOctoberCMS(http://localhost/5p_front/)です。

私は私のOctoberCMSプロジェクト(http://localhost/5p_front/)でStatic Pagesプラグインを使用していますし、私はヘッダーを表示することができていて、フロントエンドで私の10月のプロジェクトで正常に動作し、その中に静的ページプラグインを使用して、ヘッダーとフッターのメニューを作成し、フッターメニューを開きます。

builder pluginを使用して独自のプラグインを作成しました。また、私のOctoberCMSフロントエンドにデータを表示することもできます。

しかし、今、私の要件は、ヘッダを取得することで、フッターのメニューとも私のCakePHPのプロジェクトhttp://localhost/5p_group/

に私のプラグインのデータを取得するために、私は両方(ヘッダ、フッタ、メニューのデータを取得したいと私のプラグインのデータをどのデータベーステーブルに格納されています)。

だから私は知りたいと思ったOctoberCMSがOctoberCMSとCURLまたはこのhttp://localhost/5p_front/getHeaderMenuhttp://localhost/5p_front/getFooterMenuのようなもの、http://localhost/5p_front/getPluginDataを使用して、私のCakePHPのプロジェクトでそれを呼び出し、JSONまたはXMLのいずれかの応答を与える能力にAPIやWebサービスを作成するためのあらゆる機能を提供しているのですか?

ご意見やご提案は高く評価されます。

ありがとう

答えて

3

[OK]をみんな..最終的にここに私の仕事を得るために周りです私の開発したプラグインのテーブルレコードからのデータと、Static Pagesプラグインを使用して作成されたヘッダやフッタメニューを取得することができます。あなたはOctoberCMSでAPIやWebサービスを作成したい場合

まず最初は、まず、あなたがプラグインを作成し、routes.phpのというファイルを作成する必要がありますまたは単にあなたのプラグインのいずれかで同じファイルを作成することができます。

routes.php私の開発したプラグインの1つで、ファイルを作成してテストして、今すぐ実行しています。

まず私は...それを格納するデータテーブルのテーブルを使用している私のプラグインからデータを取得したいので、私はちょうど

use technobrave\sociallinks\Models\Sociallink; 

Route::post('/getSocialLinks', function() { 

    $social_links_data = Sociallink::all(); 

    $arr = array(); 
    foreach($social_links_data as $current_social_links_data) 
    {  
     $arr[] = array(
       'id'=> $current_social_links_data['id'], 
       'social_logo'=> $current_social_links_data->social_logo->getPath() 
       ); 
    } 
    return $arr; 
}); 

routes.phpのこの

を行っていると私はすることができますよ私が望むレコードを入手してください。

次に、Static Pagesプラグインを使用してヘッダーメニューを取得しました。これは私が思いついたものです。

/* Code to get menu item starts */ 
use Cms\Classes\ComponentBase; 
use RainLab\Pages\Classes\Router; 
use Cms\Classes\Theme; 
use RainLab\Pages\Classes\Menu as PagesMenu; 
/* Code to get menu item ends */ 

Route::post('/getHeaderMenu', function() 
{ 


    $menuCode = 'main-menu'; // menu code 
    $theme = Theme::getActiveTheme(); 


    $menu = PagesMenu::loadCached($theme, $menuCode); 

    $header_menu_list = array(); 
    if ($menu) 
    { 
     $menu_list = $menu->attributes['items']; 
     if($menu_list) 
     { 
      $i=0; 
      foreach ($menu_list as $current_menu_list) 
      { 

       if($current_menu_list->reference == '') 
       { 
        $current_menu_list->reference = "#"; 
       } 
       $header_menu_list[$i] = array(
              'title'=>$current_menu_list->title, 
              'url'=>$current_menu_list->reference, 
             ); 

       $header_menu_list[$i]['submenu_list'] = array(); 


       if($current_menu_list->items) 
       { 

        $sub_menu_list = $current_menu_list->items; 
        foreach ($sub_menu_list as $current_submenu_list) 
        { 
         if($current_submenu_list->reference == '') 
         { 
          $current_submenu_list->reference = "#"; 
         } 


         $header_menu_list[$i]['submenu_list'][] = array(
                   'title'=>$current_submenu_list->title, 
                   'url'=>$current_submenu_list->reference, 
                  );  
        } 

       } 
       $i++; 
      } 
     } 

    }  
    return $header_menu_list; 

}); 

routes.phpの

これは単に私のOctoberCMSプロジェクトで私の作成したヘッダーメニューのリストを取得します。

ご支援のお手伝いをしていただきありがとうございます。

非常に評価されています。

+2

このコードは働いています、高校mittul –

+1

@ManishsharmaありがとうManish ..これはあなたに役立ちます:) –

2

これを行う最良の方法は、データベースから直接データを取得することです。

routes.phpというファイルを作成して、アプリケーションへのルートを作成することができます。例えば

あなたはroutes.php

<?php 
Route::get('api/fetchModel/{id}', function($id){ 
    $data = \Namespace\Pluginname\Models\Model::find($id); 
    return $data; 
}); 
?> 

にそのような何かをコーディングすることができ、確かに、あなたはまた、あなたのプラグイン内部のコントローラにあなたのルートをリダイレクトすることができます。これを行うにはhttpというフォルダを作成し、その中にcontrollersというフォルダを作成し、その中にコントローラを作成することができます。

コントローラにリダイレクトされるルートの例。

<?php 
    Route::get('/welcome/{id}', 'Namespace\Pluginname\Http\Controllers\[email protected]'); 
?> 

そして、コントローラは、あなたがoctoberCMS例のAPIプラグインを見つけることができる

<?php namespace Namespace\Pluginname\Http\Controllers; 
use Illuminate\Routing\Controller; 
class WelcomeController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Welcome Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller renders the "marketing page" for the application and 
    | is configured to only allow guests. Like most of the other sample 
    | controllers, you are free to modify or remove it as you desire. 
    | 
    */ 
    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     // $this->middleware('guest'); 
    } 
    /** 
    * Show the application welcome screen to the user. 
    * 
    * @return Response 
    */ 
    public function index($id) 
    { 
     $data = \Namespace\Pluginname\Models\Model::find($id); 
     return $data; 
    } 
} 

そして、ここのようになります:https://github.com/daftspunk/oc-laravelapi-plugin

+0

ありがとうございました。私はあなたが私の提供された答えをチェックすることができる私の解決策を思いつきました。ありがとうございました。 –

関連する問題