2012-06-26 3 views
0

Я пытался установить связь между двумя проектами CodeIgniter.Передача объекта JSON от одного контроллера к другому контроллеру в другом проекте

У меня есть 2 проекта, скажем А и В. Каждый раз, когда вид вызывается из А и он должен ударить контроллер проекта B вместо А.

Я хочу, чтобы разрешить доступ к базе данных только проекта В и не A. SO все запросы базы данных должны быть выполнены моим B, и все дисплеи должны быть выполнены A

Есть ли способ сделать это.

+1

Что вы имеете в виду под «он должен попасть в контроллер проекта B»? Что ты пытаешься сделать? –

+0

Я пытаюсь создать APIS, где мне нужно выяснить способ общения между проектами. – user1212207

+0

Хотите ли вы общаться с серверной или клиентской стороны? –

ответ

1

Вам нужно расширить класс CI_Loader так:

class ClassNameYouWant extends CI_Loader { 
    public function construct(){ 
      parent::__construct(); 
    } 

    public function ExtendedView($view, $vars = array(), $return = FALSE){ 
     parent::view($view, $vars, $return); 

     // run your code here 
     // call projet B using cURL or whatever you want 
    } 
} 

Если вы хотите запустить свой код перед загрузкой вида, вызовите линию parent::view($view, $vars, $return); в конце функции.

Вы должны загрузить класс внутри контроллера, а затем использовать что-то вроде

$this->ClassNameYouWant->ExtendedView();

+0

Будет ли это нагрузка на контроллер из другого проекта? – user1212207

+0

Нет. Ответьте на свой вопрос, часть 1 'Всякий раз, когда вызывается из A'. Это расширение класса будет выполняться каждый раз, когда вызывается представление из A. Теперь вы должны написать сценарий, чтобы вызвать вашу другую веб-страницу, используя cURL, file_get_contents, что бы вы ни захотели внутри этой функции. Я просто дал вам способ сделать это. Я не знаю, чего вы хотите, и я не буду писать тысячи строк кода. –

+0

Я изменил содержание выше, может быть, вы можете посмотреть. – user1212207

0

Если MVC CodeIgniter похож на CakePHP, вам необходимо принять данные в контроллере A, а затем использовать соединение сокетов HTTP с сервером B и передать данные, полученные вами в контроллере A, контроллеру B. Затем контроллер B может запустить свою бизнес-логику и вернуть (как ответ HTTP) больше данных JSON обратно на ваш контроллер.

+0

есть ли способ, которым я могу перенаправить на контроллер в другом проекте? – user1212207

Смежные вопросы