Mengambil data JSON dari website lain dapat dilakukan dengan mudah dengan Yii2 yaitu menggunakan extension Yii2 Curl. Data yang akan kita ambil didapat dari link http://fantasy.premierleague.com/web/api/elements/100/, nomer dapat diganti dari 1 sampai 544 yang akan menghasilkan pemain bola yang berbeda.
1. Install linslin Yii2 Curl Extension melalui composer :
1 |
php composer.phar require --prefer-dist linslin/yii2-curl "*" |
2. Mari kita buat action di PostController, yaitu actionCurl, jangan lupa untuk menyertakan use linslin\yii2\curl;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public function actionCurl(){ $curl = new curl\Curl(); for ($id = 1; $id <= 10; $id++) { $url = 'http://fantasy.premierleague.com/web/api/elements/'.$id.'/'; $response = $curl->get($url); $api = json_decode($response); $model = new Post(); $model->post_title = $api->web_name; $model->post_description = $response; $model->save(); echo $id. ". ". $model->post_title . " from ". $api->team_name. " has been successfully added."; echo "<br />"; } echo "Done"; } |
Penjelasan kode : Kita membuat satu object Curl yang akan mengambil data pemain dari pemain 1 sampai 10. Buat Post model baru untuk disimpan di post_title untuk nama pemain, dan data json di post_description, kemudian berikan keterangan bila data sudah berhasil ditambahkan.
3. Kita buka di url alamat post/curl :
4. Sekarang semua pemain dari id 1 sampai 10 sudah masuk ke database :
Mas untuk model dan view gimana? Apa yang harus dibuat? kode di model gimana?
Please. Makasih
Ini sudah lama tidak saya update mas, sepertinya endpointnya juga sudah tidak aktif. Maaf ya. Btw untuk kasus ini, modelnya bisa dibikin sembarang aja mas, bikin tabel yang berisi id, title, description (atau apa saja), yang penting bisa jadi tempat buat simpan response dari pemanggilan api nya. Terus pake gii aja untuk bikin modelnya.
kalau untuk mengambil data nya otomatis misal di endpointnya ada data baru, nah biar keambil otomatis tanpa harus action gimana mas?
Pakai cronjob mas. Ambil data setiap beberapa waktu. Bisa di test di yii console