2016-11-15 4 views
1

Я новичок в OctoberCMS, и я нашел его очень хорошим CMS.Создать API (Web Service) в октябреCMS

Я создаю 2 проекта на своем локальном сервере. Один находится в CakePHP (http://localhost/5p_group/), а другой - в октябреCMS (http://localhost/5p_front/).

Я использую Static Pages плагин в моем проекте OctoberCMS (http://localhost/5p_front/) и я создал меню колонтитулов с помощью статических страниц плагина в нем, который прекрасно работает в моем проекте октября в передней части, как я могу отобразить заголовок и нижние колонтитулы соответственно.

Я также создал свой собственный плагин с использованием builder plugin, и я также могу отображать данные в моем переднем конце OctoberCMS.

Но теперь мое требование, чтобы получить заголовок, меню нижнего колонтитула, а также получить данные моего плагина для моего проекта CakePHP http://localhost/5p_group/

Я хочу, чтобы получить данные из обоих (меню колонтитулы и Мои данные плагин, который хранится в моей таблице базы данных).

Так я хотел бы знать, OctoberCMS предоставляет любую возможность создавать APIs или веб-сервисы в OctoberCMS и возможность вызова его в моем проекте CakePHP с использованием CURL или что-то вроде этого http://localhost/5p_front/getHeaderMenu, http://localhost/5p_front/getFooterMenu, http://localhost/5p_front/getPluginData и дать ответ либо в JSON или XML?

Любая помощь или предложения будут высоко оценены.

Благодаря

ответ

3

Ok ребята .. в конце концов, здесь моя работа вокруг, чтобы получить данные из одного из моих разработанных плагинов с его табличными записями и для получения меню заголовка или нижнего колонтитула, с помощью которого создается плагин Static Pages.

Первое первых, если вы хотите создать API или веб-сервиса в OctoberCMS, вам нужно создать плагин и создать файл с именем routes.php или вы можете просто создать один и тот же файл в одном из ваших плагинов.

Так что я просто создал routes.php файл в одном из моих разработанных плагинов для проверки и выполнения моих веб-сервисов на данный момент.

Сначала я хотел, чтобы получить данные из моего плагина, который используя DataTable таблицы, чтобы сохранить его .. так что я только что сделал это

routes.php

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; 
}); 

И я могу получить записи, которые я хотел.

Затем я играл с плагином Static Pages, чтобы получить мое Меню заголовка и вот что я придумал.

routes.php

/* 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; 

}); 

Это просто получить список моих создал заголовка меню в моем проекте OctoberCMS.

Надеюсь, что это поможет и благодарит вас за поддержку.

Высоко ценится.

+2

этот код работает, thanx mittul –

+1

@Manishsharma Спасибо, Маниш .. надеюсь, это поможет вам :) –

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]'); 
?> 

И контроллер будет похоже, что

<?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; 
    } 
} 

И здесь вы можете найти пример API плагин в octoberCMS: https://github.com/daftspunk/oc-laravelapi-plugin

+0

Благодарим за ответы. Я также придумал свое решение, которое вы можете проверить в моем предоставленном ответе. Спасибо. –