2016-07-29 1 views
2

Я очень новичок в PHP и Kohana. Уже создано образец/демонстрационное приложение «hello World» PHP Kohana, которое успешно работает на сервере WAMP.Как создать приложение PHP Kohana с помощью успокаивающих веб-сервисов?

Я хочу, чтобы мое приложение работало как полный компонент на стороне сервера.

Поскольку у меня будет только логика на стороне сервера в этом приложении, она должна использовать ORM для связи с моей базой данных MySQL.

У меня будет отдельное приложение на стороне клиента, которое будет иметь части пользовательского интерфейса.

Итак, я хочу, чтобы мой PHP-Kohana должен был распознать вызов веб-сервисов RestFul от моего клиента и соответственно дать ответ JSON.

Возможно ли создать приложение Kohana, которое поддерживает веб-службы RestFul?

Если да, дайте мне руководство для создания веб-сервисов в приложении Kohana.

Есть ли такой пример кода для демонстрации?

ответ

1

Там нет конкретного демо или пример кода, который я не знаю, так что надеюсь, что эти советы помогут вам начать работу с ним ...

Это возможно, и относительно легко, принимать AJAX запросы и производить Ответы JSON с Коханой. Первое, что нужно знать о том, что, если не сказано иначе, Kohana будет всегда пытаются сформировать мнение, и это будет терпеть неудачу в ответ JSON, так первые вещи первое:

if ($this->request->is_ajax()) { 
    // Disable any rendering of the template so it just returns json. 
    $this->auto_render = FALSE; 
} 

Вы, вероятно, хотите поместите это в метод before(), возможно, из родительского контроллера, чтобы он всегда выполнялся до получения данных из БД.

Моим личным предпочтением для этого было бы создать стандартный массив ответов AJAX, чтобы данные всегда возвращались в относительно стандартном формате. Пример:

// Standard ajax response array. 
$this->ajax_response = array(
    'success' => FALSE, 
    'error' => NULL, 
    'raw_data' => NULL, 
    'generated' => '' 
); 

Настроить вышеуказанное, чтобы оно соответствовало требуемому использованию. Вероятно, вам также понадобится это в вашем методе before().

Теперь в ваших методах действий получите данные из БД и добавьте их в массив.

public function action_foobar() { 
    // Get the primary key ID from the URL. 
    $var1 = $this->request->param('var1'); 

    $data = ORM::factory('Model', $var1); 
    if ($data->loaded()) { 
     $this->ajax_response['success'] = TRUE; 
     $this->ajax_response['raw_data'] = $data; 
    } else { 
     $this->ajax_response['error'] = 'Data could not be found.'; 
    } 
} 

тогда Вы должны быть в состоянии запросить эти данные путем вызова URL, такие как http://www.website.com/controller/foobar/42

Заключительная часть головоломки фактически возвращающегося эти данные, так как в данный момент Kohana не будет выводить что-либо, потому что мы сказали это не делать. В вашем методе после того, как(), сделайте следующее:

if ($this->request->is_ajax()) { 
    $this->request->headers('Content-Type', 'application/json'); 
    $this->response->body(json_encode($this->ajax_response)); 
} 

Тогда вы вольны интерпретировать этот ответ как вы считаете нужным в JQuery на клиентской стороне приложения:

$.ajax({ 
    type: "POST", 
    url: "http://www.website.com/controller/foobar/" + foobarId, 
    dataType: 'json', 
    success: function (data) { 
     if (!data.success) { 
      alert(data.error); 
     } else { 
      // Handle the returned data. 
     } 
    }, 
    error: function (xhr, status, errorThrown) { 
     // Something went very wrong (response failed completely). 
     alert(errorThrown); 
    } 
}); 

Удачи с созданием вашего приложения! Надеюсь, это поможет, по крайней мере, начать.

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