В настоящее время я пытаюсь подключить пользовательский сервисный модуль Drupal 7 с помощью флеш-клиента.Я могу правильно подключиться к своему сервису amfserver и фактически использовать сервис Node для захвата и манипулирования узлами.Я пытаюсь создать пользовательский сервис для удаленного предоставления функций, не предоставляемых доступными сервисами.Я пытаюсь собрать простую структуру, чтобы установить связь между моим сервисным модулем и моим сервером.У меня тонны проблем, так как я не знаю, как правильно построить сервис, и большую часть информации, которую я могу найти, я не могу получить, работая хорошо.В настоящее время я могу подтвердить, что мое флэш-приложение подключается к модулю, но модуль возвращает значение NULL.Я полагаю, что это, вероятно, что-то простое, но я не слишком знаком с php и работаю с Drupal API, поэтому любая помощь будет полезной.Вот код, который у меня сейчас есть для модуля.
<?php
// mrbremoteresource.module
/**
* Implements hook_perm().
*/
function mrbremoteresourse_perm() {
return array(
'mrbremote resource search',
);
}
/**
* Perform a search node ID.
*
* @param string $id
* Node ID to lookup
* @return object
*/
function mrbremoteresource_search($id) {
$nodes = array();
$result = db_query("SELECT title FROM {node} WHERE nid=:id", array(':id' => $id));
$res = $result->fetchObject();
foreach ($res as $node) {
$nodes[] = $node;
}
return $nodes;
}
/**
* Implements hook_services_resources().
*/
function mrbremoteresource_services_resources() {
return array(
'mrbremote' => array(
'search' => array(
'help' => 'Retrieve a node',
'file' => array('file' => 'inc', 'module' => 'mrbremoteresource'),
'callback' => '_mrbremoteresource_find',
'access callback' => '_mrbremoteresource_access',
'access arguments' => array('view'),
'access arguments append' => TRUE,
'args' => array(
array(
'name' => 'id',
'type' => 'int',
'description' => 'The id of the node to get',
'source' => array('path' => '0'),
'optional' => FALSE,
),
),
),
),
);
}
/**
* Access callback for the node resource.
*
* @param string $op
* The operation that's going to be performed.
* @param array $args
* The arguments that will be passed to the callback.
* @return bool
* Whether access is given or not.
*/
function _mrbremoteresource_access($op, $args) {
global $user;
$access = FALSE;
switch ($op) {
case 'view':
$node = mrbremoteresource_search($args[0]);
$access = user_access('this resource view any node');
$access = $access || $note->uid == $user->uid && user_access('this resource view own nodes');
break;
}
// Force access for debugging
$access = TRUE;
return $access;
}?>
<?php
// noteresource.inc
/**
* Callback for retrieving note resources.
*
* @param string $id
* Node ID to lookup
* @return object
*/
function _mrbremoteresource_find($id) {
return mrbremoteresoure_search($id);
}
?>
Я использовал информацию из Документация по Drupal API , чтобы попытаться выполнить это, но до сих пор безуспешно.Каков наилучший способ заставить это работать?
РЕДАКТИРОВАТЬ: я добавляю код из простого флэш-клиента.Я на самом деле пытаюсь использовать это с другим приложением, но я просто бросил это крошечное приложение, чтобы можно было отлаживать его.
<?xml version="1.0" encoding="utf-8"?.>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
initialize="init();">
<fx:Script>
<![CDATA[
public function init():void {
remNode.search("1")
}
public function onResult(responds:Object):void {
trace(responds);
}
public function onFault(responds:Object):void {
trace(responds);
}
]]>
</fx:Script>
<fx:Declarations>
<s:RemoteObject endpoint="http://localhost/drupal/remmirecipebox"
destination="amfserver"
source="mrbremote"
id="remNode"
showBusyCursor="true">
<s:method name="search" result="onResult(event)" fault="onFault(event)"/>
</s:RemoteObject>
</fx:Declarations> </s:Application>
В теге xml вверху я просто поместил a.между ?и> потому что он продолжал вырезать мой код.Это не в самом коде приложения.