[Yii Framework] Membuat Web Service SOAP(3)

Sebelumnya saya sudah memaparkan step-step untuk membuat web service pada Yii Framework disini dan disini. Yah kedua postingan itu barulah memaparkan cara untuk membuat service yang mengizinkan client mengambil data. Nah, bagaimana jika ada kasus dimana kita ingin mengizinkan user melakukan perubahan data?? baik itu Insert data baru, update, maupun delete?? Okeh, mari kita bahas cara membuat itu semua dengan Yii Framework..

Pertama-tama, buatlah sebuah fungsi yang mengizinkan user melakukan manipulasi data. Saya hanya akan membuat sebuah fungsi INSERT dan UPDATE data baru dengan web Service. Kurang lebih code dari fungsi yang saya buat adalah seperti berikut:

	/**
	 * @param Satu contact model
	 * @return boolean
	 * @soap
	 */
	public function saveSatu($data)
	{
		if(($oldData=Satu::model()->findByAttributes(
                    array('satusatu'=>$data->satusatu)))!==null)
		{
			$oldData->attributes=$data->attributes;
			return $oldData->save();
		}
		else
		{
			$model=new Satu;
			$model->attributes=$data->attributes;
			return $model->save();
		}
	}

Penjelasan : Pada fungsi di atas saya membuat sebuah fungsi “saveSatu()” dengan parameter nya yang adalah sebuah object “Satu”. Di dalam fungsi itu akan secara otomatis mendeteksi apakah data yang di input sudah ada atau belum. Sehingga jika data nya sudah ada, maka program akan melaksanakan “UPDATE” data secara otomatis. Tapi jika data yang di masukkan belum ada, maka program akan melakukan “INSERT” data.

Setelah kita telah membuat sebuah fungsi yang mengizinkan user untuk melakukan “INSERT” dan “UPDATE” data, maka kita tinggal membuat sebuah client aplikasi yang mengizinkan client untuk mengizinkan fungsi tersebut.

Pada client aplikasi yang saya buat, saya telah membuat sebuah model “Satu” yang attributnya saya buat sama persis dengan model “Satu” yang ada pada server application service nya. Saya juga telah membuat form entri data yang dimana inputan-inputan pada form tersebut akan di tangkap sebagai nilai-nilai yang akan di input ke dalam service yang telah kita buat. Lalu saya membuat sebuat “actionCreate()” pada controller saya yang melakukan penyimpanan data lewat service, kurang lebih saya edit code nya menjadi seperti berikut:

public function actionCreate()
{
	$model=new Satu;
	$client=new SoapClient('http://localhost/namaProject/index.php?r=satu/quote');

	if(isset($_POST['Satu']))
	{
		$model->attributes=$_POST['Satu'];
		$client->saveSatu($model);
	}

	$this->render('create',array(
		'model'=>$model,
	));
}

Penjelasan : Fungsi di atas akan menangkap semua inputan pada form inputan yang telah kita buat. Yah, ini sama persis dengan step “INSERT” data biasa. Hanya saja, disini saya tidak menjalankan perintah untuk menyimpan data tersebut, tapi saya memerintahakan program menjalankan fungsi Service yang sudah kita buat sebelumnya. Dan setelah form tersebut dijalankan, data yang ada pada aplikasi server telah terinput datanya dengan yang sudah kita input tadi…

Selesai…. Selamat mencoba…

Semoga membantu😀

31 Responses to [Yii Framework] Membuat Web Service SOAP(3)

  1. Christian says:

    Halo mas, makasih banyak atas penjelasannya, sangat jelas. Namun ada 1 hal yang ingin saya tanyakan dan menjadi pertimbangan saya menggunakan SOAP di PHP.

    Bagaimana mas mengidentifikasi client mana yg boleh mengakses controller mas utk melakukan save data ini?

    Trims ya mas.

  2. dibuat proses autentikasi aja di action SOAP nya mas..
    coba liat contoh demo aplikasi dari Yii, disana ada aplikasi yg nunjukin penggunaan SOAP yg sudah ada proses autentikasinya..

  3. uswandy says:

    kalo eror begini kenapa ya mas

    Function (“saveSatu”) is not a valid method for this service

    saya ikutin di actionCreate pada controller : SatuController.php

    pas di klik not valid method

    trims

  4. udah di definisikan SOAp nya di action tsb mas?

  5. uswandy says:

    solved mas…
    masalahnya adalah karena sebelumnya saya menambahkan field id di database

    jadi di model saya tembahkan properti id

    thanks

  6. uswandy says:

    thanks mas,
    sangat membantu tutorialnya

  7. Nah, rame kan disini yg pada comment😀, ini cikal bakal SaaS dgn Yii Framework nih, tinggal tambah flex buat client scriptnya, ajib pastinya.. thx bro

  8. Plus implementasi sederhana dari IWebServiceProvider supaya ada fitur pengawasan dari remote request/invoke dan logging ke webappnya, buat reporting internal.. request seri yg keempat bro.. ttg ini supaya jelas sejelas2nya ttg SaaS menggunakan Yii Framework hehe, Bahkan progress openedge pun jauh lebih rumit drpada ini.. Sakti lah Yii

  9. oh, saya juga belum pernah coba sampe sana mas.. okeh.. nanti kalo udah bisa saya share mas sekalian sama2 belajar…

  10. Jeanny says:

    Mas nanya ya😀 Kalau casenya pihak luar yang akan kita manipulasi datanya gimana mas?
    Jadi misalnya pihak luar itu pake aplikasi Java, brati dia yg menyediakan web servicenya ya? Trus cara kita insert ke web servicenya dia itu gmn kalo di coding Yii kita?

  11. pertama sediain fungsi nya di aplikasi Yii yang ngizinin pihak luar input data. Terus di java nya tinggal manggil fungsi itu..

  12. Jeanny says:

    nanya lagi😀 sy sudah bikin nih web service di yii yg simple, returnnya string biasa. Yg sy tanyakan itu kalo diakses dr browser biasa emang ga tampil ya return stringnya? Trus sy coba bikin client web service sederhana di php jg ga tampil.. mohon pencerahannya😀

  13. itu tampil mbak.. saya udah pernah paparkan pake C# saya buat.. itu bisa mbak..

  14. emenz1990 says:

    bang, klu misalnya kita ingin panggil data seperti membuat webservice soap(2) tetapi public getSatus($data)… $data tersebut bukan model

  15. mbahsomo says:

    Tutorial yang ini ada yang kurang mas
    hehehe Insert udpate delete untuk C# ngak ada mas ???

  16. iya gan.. belum sempet nyusun tutor nya gan..

  17. Jordan Sipahutar says:

    selamat pagi bang,

    Bang model satu di client percis sama gak sama model satu di server????

    terimakasih……..

  18. dini says:

    mas kalo manggilnya pake yii juga gmn?

  19. mas sabit mau tanya, knapa ya soap saya ko function “call” nya ga kebaca ?
    mohon bantuannya🙂

  20. ada mas, seperti ini Function (“call”) is not a valid method for this service

  21. sedangkan di localhost bisa, tetapi setelah online tidak bisa

  22. lihat pesan error nya dia gagal manggil fungsi call nya.. kalo di akses lewat browser langsung keluar ga XML nya dik? (yang online)

  23. untuk yg online call nya saya ganti jadi __call, dan data stdClass Object nya kosong mas, XML request dan response nya pun ga keluar .

  24. mas kenapa ya data dari webservernya selalu kosong, apakah ada bagian dari yii yg harus diaktifkan supaya data dari webserver bisa masuk ?
    mohon bantuannya🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: