J'ai créé un module personnalisé dans SugarCRM (V7.8 je pense, a accueilli, non sur site)SugarCRM Utilisation REST API Avec personnalisée Module
Le module est nommé « Clients », et à des fins de test - je fait la structure est la même que "Comptes".
J'utilise l'exemple sur cette page: http://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.6/API/Web_Services/Examples/v10/module_POST/
Quand je lance le code pour le module Comptes cela fonctionne. Lorsque je tente de déposer un dossier au module clients je reçois:
[error] => no_method
[error_message] => Could not find a route with 1 elements
Ma compréhension est que les API sont censés travailler pour des modules personnalisés, est-ce incorrect? Mon but ultime est de créer 5 ou 6 modules personnalisés et d'y insérer des données depuis notre système ERP en temps réel via les API REST.
Voici l'exemple de code:
<?php
$base_url = "https://my.domain/rest/v10";
$username = "admin";
$password = "*********";
function call($url,$oauthtoken='',$type='GET',$arguments=array(),$encodeData=true,$returnHeaders=false){
$type = strtoupper($type);
if ($type == 'GET')
{
$url .= "?" . http_build_query($arguments);
}
$curl_request = curl_init($url);
if ($type == 'POST')
{
curl_setopt($curl_request, CURLOPT_POST, 1);
}
elseif ($type == 'PUT')
{
curl_setopt($curl_request, CURLOPT_CUSTOMREQUEST, "PUT");
}
elseif ($type == 'DELETE')
{
curl_setopt($curl_request, CURLOPT_CUSTOMREQUEST, "DELETE");
}
curl_setopt($curl_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($curl_request, CURLOPT_HEADER, $returnHeaders);
curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_request, CURLOPT_FOLLOWLOCATION, 0);
if (!empty($oauthtoken))
{
$token = array("oauth-token: {$oauthtoken}","Content-Type: application/json");
curl_setopt($curl_request, CURLOPT_HTTPHEADER, $token);
}
if (!empty($arguments) && $type !== 'GET')
{
if ($encodeData)
{
//encode the arguments as JSON
$arguments = json_encode($arguments);
}
curl_setopt($curl_request, CURLOPT_POSTFIELDS, $arguments);
}
$result = curl_exec($curl_request);
if ($returnHeaders)
{
//set headers from response
list($headers, $content) = explode("\r\n\r\n", $result ,2);
foreach (explode("\r\n",$headers) as $header)
{
header($header);
}
//return the nonheader data
return trim($content);
}
curl_close($curl_request);
//decode the response from JSON
$response = json_decode($result);
return $response;
}
//Login - POST /oauth2/token
$url = $base_url . "/oauth2/token";
$oauth2_token_arguments = array(
"grant_type" => "password",
//client id/secret you created in Admin > OAuth Keys
"client_id" => "sugar",
"client_secret" => "",
"username" => $username,
"password" => $password,
"platform" => "base"
);
$oauth2_token_response = call($url, '', 'POST', $oauth2_token_arguments);
//Create record - POST /<module>/
$url = $base_url . "/Customers"; //works id this is "Accounts"
$record_arguments = array(
"name" => "ACME Inc.",
"description" => "Not for Coyotes"
);
$record_response = call($url, $oauth2_token_response->access_token, 'POST', $record_arguments);
echo "<pre>";
print_r($record_response);
echo "</pre>";
Je suis revenu sur la documentation et j'ai trouvé ceci: "Clé: La clé est un texte alphanumérique Pour distinguer les modules avec des noms similaires, le système préfixera tous les noms de classe, les répertoires et les noms de table avec cette clé. " Cela s'est avéré être le préfixe que vous avez indiqué. Je pense que la documentation pourrait probablement être un peu plus claire. Merci pour la réponse rapide. –