goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

PHPからSOAPをやってみる(SugarCRMで)-その3:データ登録

2007-09-13 18:04:18 | SugarCRM

 昨日、PHPからSOAPをやってみる(SugarCRMで)-その2:データ読み込みについて書きましたけど、さっき書いたように、同じように、データ登録をやったらうまくいきませんでした。

 ということで、今回は、登録がうまくいくSOAPの呼び出し方のほうについて書いてみたいと思います。




■仕様

環境は、昨日や、さっき書いたのと同じ。
以下のリード(Leads)を登録します。
    ファーストネーム:Dan
    ラストネーム  :Aarons
    タイトル    :CFO
(なお、なんで、こんな名前なのかは、後のほうで書きます)




■ソース

で、ソースなんですけど、こんなかんじ
<?php
if(!defined('sugarEntry'))define('sugarEntry', true);
require_once('Sugar/include/nusoap/nusoap.php');

	//==============================//
	//	SugarCRMのSOAP呼び出し	//
	//==============================//
$soapclient = new nusoapclient('http://localhost/Sugar/soap.php');

	//==============================//
	//	ログインする		//
	//==============================//
$result = $soapclient->call(
	'login',
	array(	'user_auth'=>array(
			'user_name'=>'admin',
			'password'=>md5('adminのパスワード'), 
			'version'=>'.01'), 
		'application_name'=>'12345')
	);
$session = $result['id'];

	//==============================//
	//	リード作成		//
	//==============================//
$result = $soapclient->call(
		'set_entry',
		array(
			'session'=>$session,
			'module_name'=>'Leads',
			'name_value_list'=>array(
				array('name'=>'first_name', 'value'=>'Dan'),
				array('name'=>'last_name', 'value'=>'Aarons'),
				array('name'=>'title', 'value'=>'CFO')
				)
			)
		);

//	結果表示	
print_r($result);


	//==============================//
	//	終了			//
	//==============================//
	//	ログアウト。
$result = $soapclient->call('logout',array('session'=>$session));

?>

(上記 < > ¥は、本当は半角)

実際には、< > ¥を半角に置換するほか、
・nusoapclientのhttp://localhost/Sugar/soap.phpを、本当のSugarCRMのsoap.phpのあるところに置き換える。
・adminのパスワードは、本当のadminのパスワードにする
 (adminでログインする場合。他のログイン名なら、当然その人のパスワードで)
もやります。

今回は、callで、呼び出しメソッドを指定する方法でやったら。。

うまくいきました。




■サンプルがありました。

 SugarCRMをインストールしたフォルダにexamplesというフォルダがあり(moduleなんかと同レベルの位置のフォルダ)。そこにSoapTest.phpっていうサンプルがありました。それを参考にしています。

 そこにあった名前ツーかメールアドレスが、さっきのDan Aarons。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SugarCRMのSOAP,set_entryでうまくいかず…=>できた!16時追加

2007-09-13 15:11:30 | SugarCRM

うぇーん、わかんないよお。。

SugarCRMの更新(idを入れないと新規作成になる)ということで、
set_entryを使って例を示そうと思ったんです。

こんなかんじで。。

<?php

	//==============================//
	//	SugarCRMのSOAP呼び出し	//
	//==============================//
	$client = new SoapClient("http://127.0.0.1/Sugar/soap.php?wsdl");

	//==============================//
	//	ログインする		//
	//==============================//
    	$user_auth = array(
      			'user_name' => 'admin',
     			'password' => md5('adminのパスワード'),
     			'version' => '1.1'
    	);
	$result = $client->login($user_auth,"12345");
	$id	=	$result->id;

	//==============================//
	//	リード作成		//
	//==============================//
	
	//引数設定
	$list = array(	array( 'name' => 'first_name','value' => 'Bill'),
			array( 'name' => 'last_name','value' => 'Gate'),
			array( 'name' => 'title','value' => 'CAO'));

	//	作成(set_entryでidがないと、追加する)
	$result = $client->set_entry($id,'Leads',$list);
	print_r($result);

	//==============================//
	//	データの取得		//
	//==============================//

	//	おしまい。ログアウト。
	$client->logout($id);

?>

(上記< > ¥は、当然、半角にして打ってます)

だけど、上記の例、first_nameとか、1件だけ指定するとうまくいくんだけど、
上記のように2件以上、設定するとうまくいかない。

この関数は、SoapSugarUsers.phpのset_entry関数に来るんだけど、そこの時点で、すでに1件しか入っていない。それも、nameが空になっている(first_name1項目しか、セットしてない状況ではOK)

うーん・・・なんでなんだろう。。

P.S ちなみに、リーダー作成の、create_leadは、うまくいく。




16時追加

できました!
もうひとつのSOAP呼び出し方法でできます。

というか、サンプルソースがありました。
べつのエントリにして、後で書きます。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする