Forked from taufikherjanto/history_chat_1s_symfonyid_free_course.txt
Created
October 31, 2016 04:20
-
-
Save ad3n/d5a36f13d697ca6cccdd403f87b185d0 to your computer and use it in GitHub Desktop.
#1 [SymfonyId Free Course]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Your Telegram History | |
03.10.2016 17:00:15, Nur Rahmat Taufik(you): undefined | |
03.10.2016 17:16:40, Muhammad Surya: selamat datang semuanya π | |
03.10.2016 17:30:04, Muhammad: undefined | |
03.10.2016 17:30:10, Muhammad: Tes | |
03.10.2016 17:30:30, Muhammad Surya: Makin rame | |
03.10.2016 17:30:41, Muhammad Surya: tersisa 10 quota lagi :D | |
03.10.2016 17:30:50, Muhammad Surya: 5 dari luar 5 dari komunitas | |
03.10.2016 17:31:03, Muhammad: Seeepppπ | |
03.10.2016 18:38:07, rudjok: undefined | |
04.10.2016 01:47:12, Abdul Jabar: undefined | |
04.10.2016 01:47:19, Abdul Jabar: TES | |
04.10.2016 06:29:16, Muhammad Surya: Ditest dulu aja masih hari selasa | |
04.10.2016 09:53:04, Muhamad: undefined | |
04.10.2016 10:00:34, Muhamad: terima kasih sudah di ijinkan untuk bergabung.. | |
perkenalkan saya muhamad alfan, masih duduk di bangku kuliah semster 7, dan kerja di salah satu perusahaan swasta, salam kenal semua ππ | |
mohon bimbingannya ya ππ»ππ» | |
04.10.2016 13:55:50, Muhammad Surya: udah om | |
04.10.2016 13:56:45, Muhammad Surya: eh salah tempat | |
04.10.2016 15:04:48, Yuan: salam kenal semua. | |
04.10.2016 15:05:04, Yuan: om sur, kita nanti pakai git semua atau bagaimana buat praktek? | |
04.10.2016 15:07:54, Muhammad Surya: Pakai local masing2 aja om | |
04.10.2016 15:08:09, Yuan: ente gak periksa2 nanti? | |
04.10.2016 15:11:14, Muhammad Surya: Ga usah om... | |
06.10.2016 09:28:59, Ahmad: undefined | |
06.10.2016 10:00:16, Muhammad Surya: Assalamu'alaikum guys, sebelum mulai belajar bareng kita besok, ane pengen tanya nih, | |
Apa ekspektasi atau harapan kalian semua setelah ikut sharing session sesi pertama ini? | |
06.10.2016 10:01:34, Feisal: Bisa kenal dengan framework symfony, dari mulai kelebihan kekurangan, struktur, dll | |
06.10.2016 10:02:07, Muhammad Surya: oiya sesi pertama ini total ada 10 kali pertemuan online dengan durasi 2-3 jam | |
06.10.2016 10:02:08, Muhamad: dan brharap bisa mulai instalasi dan basic configurasi | |
06.10.2016 10:02:40, Muhammad Surya: setelah sesi I kelar, insyAllah akan ada sesi atau angkatan II dan seterusnya (semoga bisa istiqomah) | |
06.10.2016 10:03:59, Feisal: Amiinn mudah2an aja om | |
06.10.2016 10:04:09, Muhamad: kalo sampe 10 kali pertemuan, alfan berharap minimal bisa bangun sistem aplikasi yang bisa menggunakan min 50% fitur di symfony om | |
06.10.2016 10:04:19, Muhamad: aammiinnn | |
06.10.2016 10:04:48, rudjok: berhubung baru kenalan sama, semoga bisa akrab sama symfony. soalnya denger2 learning curvenya tinggi. | |
06.10.2016 10:05:07, rudjok: aamiin | |
06.10.2016 10:05:08, Muhammad Surya: Ane aja baru pakai sekitar 20-30% gan :v Symfony itu terlalu luas kalau dijelajahin semuanya | |
06.10.2016 10:05:32, Muhamad: berarti target kita 10% ya om ππ | |
06.10.2016 10:05:49, Muhammad Surya: Learning Curve-nya terus naik sebanding dengan peningkatan skill kita om hehehe semakin meningkat semakin ada aja yang dipelajari dari Symfony :D | |
06.10.2016 10:06:37, Muhammad Surya: Semoga bisa gan π Soalnya kalau 50% itu berarti mencakup Dom Crawler, Browser Kit, Css Selector dan macem2 tool aneh2 yang jarang saya pakai π | |
06.10.2016 10:07:35, Feisal: Wah luar biasa ternyata symfony ya, baru tau saya | |
06.10.2016 10:07:49, Muhammad Surya: tapi kalau sudah paham bagaimana memanfaatkan potensi Symfony bakalan lebih mudah belajarnya π | |
06.10.2016 10:08:14, Feisal: Tapi kenapa symfony kurang populer ya dari pada laravel atau yg lain nya gitu om? | |
06.10.2016 10:27:10, Muhammad Surya: Learning Curve-nya Tinggi, Enterprise Framework seperti Symfony dan Zend akan tetap kurang populer karena mereka segment-nya adalah orang-orang yang sudah berkutat dengan teknologi lain | |
06.10.2016 10:27:13, Yuan: dijamin ketagihan sama symfony! cuaaaakep! | |
06.10.2016 10:28:26, Muhammad Surya: Mereka segment-nya adalah orang-orang yang mencari solusi advanced to expert untuk kasus-kasus yang jika menggunakan tool lain, integrasinya lumayan bikin jidat berkerut... | |
06.10.2016 10:29:26, Muhammad Surya: http://martinfowler.com/articles/enterprisePatterns.html | |
06.10.2016 10:30:10, Yuan: ada yang harus dibaca2 dulu om surya buat persiapan besok? | |
06.10.2016 10:30:36, Muhammad Surya: Saya berharap sudah menginstall dan mempelajari apa itu composer bagaimana menggunakan php dengan command line | |
06.10.2016 10:30:47, Yuan: siip! | |
06.10.2016 10:31:00, Yuan: mayoritas pakai windows? mac atau linux di sini? | |
06.10.2016 10:31:26, Muhamad: alfan windows | |
06.10.2016 10:31:33, Muhammad Surya: saya berharap kalian semua mudah mulai membiasakan dengan command line dan mode hitam putih (TANPA GUI) karena kita akan lebih banyak menggunakan itu ketika bermain dengan Symfony | |
06.10.2016 10:31:37, Muhamad: siap om sur | |
06.10.2016 10:32:01, Yuan: maaf of sur, command line saya warna-warni, pake fish. hehehehe... | |
06.10.2016 10:32:10, Muhammad Surya: wkwkwk mantab dah | |
06.10.2016 10:33:02, Muhammad Surya: sangat dianjurkan untuk menggunakan Linux karena saya beberapa kali punya pengalaman buruk dengan access control (permission) windows | |
06.10.2016 10:34:12, Muhammad Surya: Selain itu saya sudah lebih dari 5 tahun tidak menggunakan windows sehingga kemungkinan saya tidak bisa membantu jika ada permasalahan dilevel OS semisal file permission, folder permission, dkk | |
06.10.2016 10:35:29, Yuan: pake VPS aja yang masih pakai windows. bikin di digital ocean. ringan kok. editor nanti bisa pake sublime text2 | |
06.10.2016 10:36:22, Muhammad Surya: Oiya Editornya diharapkan menggukan minimal Netbeans agar lebih mudah, sebisa mungkin jangan Text Editor, karena untuk autocomplete tidak bisa maksimal | |
06.10.2016 10:36:31, Yuan: hahaha.. oops.. | |
06.10.2016 10:37:37, Yuan: noted om. koreksi. jangan pake sublime text2. | |
06.10.2016 10:37:49, Muhammad: materi pertemuan satu apaan brow π | |
06.10.2016 10:38:03, Muhammad Surya: Instalasi, Konfigurasi dan Touring aja | |
06.10.2016 10:38:07, Muhammad Surya: ga berat2 dulu | |
06.10.2016 10:38:37, Muhammad: materi akhir kira2 sampe mana y ? | |
06.10.2016 10:41:25, Muhammad: ane masih bingung sama pattern di admin builder tempo hari π | |
06.10.2016 10:42:10, Muhammad Surya: Semoga bisa nyinggung sampai SIAB π tapi yang jelas ane lebih utamakan pattern Symfony-nya dulu | |
06.10.2016 10:42:46, Yuan: mantap! pattern dan targetnya SIAB. horeee | |
06.10.2016 10:43:31, Muhammad Surya: Bagaimana menulis code dengan dengan lebih baik, fleksibel untuk di extends, decouple, dan lebih bersih dari hardcode | |
06.10.2016 10:44:33, Muhammad Surya: Insya Allah kalau memang suka dengan esperimen, ini akan asyik π | |
06.10.2016 10:44:45, Muhammad Surya: nanti ada di github kok tiap progress-nya π | |
06.10.2016 10:45:04, Yuan: besok jam berapa om? | |
06.10.2016 10:45:31, Muhammad Surya: Jam 20.00 - 22.00 insya Allah | |
06.10.2016 10:45:45, Yuan: prime time itu! siiiip! | |
06.10.2016 10:57:11, Muhammad Surya: Persiapan: | |
1. IDE (Netbeans or Eclipse) | |
2. Composer (getcomposer.org) | |
3. Symfony Installer (symfony.com/download) | |
4. Koneksi Internet | |
5. Snack | |
06.10.2016 10:57:26, Muhammad Surya: buat besok tolong dipersiapkan aja π | |
06.10.2016 11:08:13, Feisal: | |
06.10.2016 11:08:13, Feisal: Om kalau udh berhasil install tampilan nya gini bukan | |
06.10.2016 11:08:36, Muhammad Surya: yup gan | |
06.10.2016 14:55:53, Nur Rahmat Taufik(you): Wah rame, telat nimbrung. Harapan saya bisa menggunakan framework symfony, berikut best practice ketika mendevelop web dg symfony juga | |
07.10.2016 07:51:40, Ahmad: | |
07.10.2016 10:31:39, Iqbal: Wah maaf telat , udh mulai blm yah ? | |
07.10.2016 10:33:02, Iqbal: Oh mulai jam 20.00 yak , oke | |
07.10.2016 11:43:15, Muhammad: yg make windows sekarng bukannya dah ada bash y | |
07.10.2016 11:43:29, Muhammad: meskipun katanya lemot :P | |
07.10.2016 13:02:51, Muhammad Surya: Guys, sorry... Untuk jadwal hari ini kita majukan jadi jam 19.00 sampai jam 21.00 ya π | |
07.10.2016 13:03:22, Muhammad Surya: jangan lupa untuk menginstall semua yang diperlukan π | |
07.10.2016 13:03:30, Muhammad Surya: ini | |
07.10.2016 13:19:01, Muhamad: siap om sur | |
07.10.2016 17:09:26, Yuan: Noted om sur | |
07.10.2016 18:57:12, Muhammad Surya: Assalamu'alaikum π 3 menit lagi ya siap2 | |
07.10.2016 18:57:28, Muhammad Surya: absen donk π | |
07.10.2016 18:57:59, rudjok: ane, om | |
07.10.2016 18:58:13, Iqbal: Hadir.. cuma inet agak lemot abis ujan.. | |
07.10.2016 18:58:13, rudjok: waalaikumsalam | |
07.10.2016 18:59:35, Muhamad: hadirr | |
07.10.2016 19:00:27, Muhammad: hadir brow | |
07.10.2016 19:01:12, Muhammad Surya: Ok mulai ya π | |
07.10.2016 19:01:19, Muhammad Surya: sudah pada berhasil semua install Symfony? | |
07.10.2016 19:01:28, Muhamad: alfan sufah | |
07.10.2016 19:01:30, Muhamad: *sudah | |
07.10.2016 19:02:17, Yuan: Lanjut om | |
07.10.2016 19:02:51, Muhammad Surya: Ok sebelum mulai, sedikit pengenalan tentang Symfony bagi yang belum tau | |
07.10.2016 19:02:57, rudjok: installnya udah, om | |
07.10.2016 19:03:53, Muhammad Surya: Symfony adalah salah satu Full Stack Web Framework yang secara de facto menjadi standard di PHP (ref: http://stackphp.com) | |
07.10.2016 19:05:01, Muhammad Surya: Symfony bukan MVC Framework tapi Symfony adalah Request => Response Framework... Dan Symfony adalah yang pertama kali (di bahasa PHP) yang menulis HttpKernel Component | |
07.10.2016 19:05:53, Muhammad Surya: Symfony adalah Framework PHP dengan cita rasa Java yang kental π | |
07.10.2016 19:06:36, Muhammad Surya: Jadi kalau memang berbeda dengan yang lain ya karena dari awal Symfony memang filosofinya sudah beda π | |
07.10.2016 19:07:42, Muhammad Surya: Di PHP sendiri, Komunitas Symfony telah melahirkan tool yang disebut Composer (Jordi B n Neil A), tool yang awalnya memang dikhususkan untuk memudahkan instalasi Symfony Bundle | |
07.10.2016 19:08:34, Muhammad Surya: Selanjutnya Symfony banyak digunakan oleh project-project lain seperti Drupal, Laravel, dll (ref: http://symfony.com/projects) | |
07.10.2016 19:09:03, Ahmad: Hadir | |
07.10.2016 19:09:30, Muhammad Surya: Sehingga secara tidak langsung, jika kita belajar Symfony maka kita akan lebih mudah masuk ke dalam project open source lainnya yang menggunakan Symfony | |
07.10.2016 19:09:54, Muhammad Surya: Nah sampai disini apakah tertarik menggunakan Symfony atau malah "ah terlalu kompleks, mending cari yang ringan aja" | |
07.10.2016 19:11:00, Muhamad: lanjuuttt...... | |
07.10.2016 19:11:09, Muhammad Surya: wah ga ada orangnya ay? | |
07.10.2016 19:11:20, Nur Rahmat Taufik(you): On | |
07.10.2016 19:11:31, Iqbal: Lanjut om... | |
07.10.2016 19:11:52, Muhammad Surya: Ok, sudah pada install Symfony semua kan? | |
07.10.2016 19:12:00, Ahmad: Tertarik om | |
07.10.2016 19:12:04, Ahmad: Sudah om | |
07.10.2016 19:12:30, rudjok: lanjut | |
07.10.2016 19:12:36, Muhammad: dah brow | |
07.10.2016 19:12:53, Iqbal: Udh om.. | |
07.10.2016 19:12:58, Muhammad Surya: Ok mari kita bertamasya ke hasil instalasi kita | |
07.10.2016 19:13:18, Ahmad: Siap | |
07.10.2016 19:13:45, Ahmad: Versinya bebas atau ditentukan | |
07.10.2016 19:13:54, Muhammad Surya: latest version π | |
07.10.2016 19:14:05, Ahmad: 3.1.5 om | |
07.10.2016 19:14:26, Muhammad Surya: yup | |
07.10.2016 19:14:56, Muhammad Surya: untuk mengetahui versi symfony dapat mengetikan command dari root project | |
07.10.2016 19:15:06, Muhammad Surya: php bin/console --version | |
07.10.2016 19:15:20, Muhammad Surya: monggo kirim SS-nya kesini | |
07.10.2016 19:16:04, rudjok: | |
07.10.2016 19:16:24, Muhammad Surya: Yang lain gimana? | |
07.10.2016 19:16:35, Muhammad: done | |
07.10.2016 19:17:17, Iqbal: v 3.1.5 om | |
07.10.2016 19:17:26, Nur Rahmat Taufik(you): sebentar | |
07.10.2016 19:17:37, Muhamad: | |
07.10.2016 19:17:54, Muhammad Surya: pastikan semuanya pakai 3.1.5 ya guys | |
07.10.2016 19:18:11, Muhammad Surya: Ok lanjut ya | |
07.10.2016 19:18:42, Nur Rahmat Taufik(you): 3.1.5 | |
07.10.2016 19:18:58, Muhamad: maaf ya om sur, ijin bentar ya, dsini lagi adzan isya, mau shalat dlu, silakan di lanjut aj | |
07.10.2016 19:19:05, Muhammad Surya: ok mari masuk ke folder app | |
07.10.2016 19:19:08, Nur Rahmat Taufik(you): | |
07.10.2016 19:19:12, Muhammad Surya: Yup moggo gan π | |
07.10.2016 19:19:52, Muhammad Surya: difolder app dua folder secara default yaitu config dan Resources | |
07.10.2016 19:20:10, Muhammad Surya: dan beberapa file lain seperti AppKernel.php, dkk | |
07.10.2016 19:20:19, Ahmad: | |
07.10.2016 19:21:06, Muhammad Surya: mari kita buka file AppKernel.php terlebih dahulu π | |
07.10.2016 19:21:25, Ahmad: Ok | |
07.10.2016 19:21:48, Muhammad Surya: <?php | |
use Symfony\Component\HttpKernel\Kernel; | |
use Symfony\Component\Config\Loader\LoaderInterface; | |
class AppKernel extends Kernel | |
{ | |
public function registerBundles() | |
{ | |
$bundles = [ | |
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), | |
new Symfony\Bundle\SecurityBundle\SecurityBundle(), | |
new Symfony\Bundle\TwigBundle\TwigBundle(), | |
new Symfony\Bundle\MonologBundle\MonologBundle(), | |
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), | |
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), | |
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), | |
new AppBundle\AppBundle(), | |
]; | |
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { | |
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); | |
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); | |
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); | |
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); | |
} | |
return $bundles; | |
} | |
public function getRootDir() | |
{ | |
return __DIR__; | |
} | |
public function getCacheDir() | |
{ | |
return dirname(__DIR__).'/var/cache/'.$this->getEnvironment(); | |
} | |
public function getLogDir() | |
{ | |
return dirname(__DIR__).'/var/logs'; | |
} | |
public function registerContainerConfiguration(LoaderInterface $loader) | |
{ | |
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml'); | |
} | |
} | |
07.10.2016 19:22:01, Muhammad Surya: kira2 seperti itu ya isi-nya | |
07.10.2016 19:22:28, Muhammad: ok | |
07.10.2016 19:22:42, Nur Rahmat Taufik(you): ya sama | |
07.10.2016 19:22:46, Ahmad: Iya | |
07.10.2016 19:22:52, Muhammad Surya: registerBundles() | |
function itu adalah tempat dimana semua bundle (module) symfony didaftarkan | |
07.10.2016 19:23:41, Iqbal: iya om sama.. | |
07.10.2016 19:24:01, Muhammad Surya: getCacheDir | |
function ini adalah function yang vital di symfony | |
07.10.2016 19:25:04, Muhammad Surya: karena berbeda dengan Framework lain-nya yang menjadikan cache sebagai optional ketika optimasi, Symfony justru menggunakan cache sebagai inti dari framewrok | |
07.10.2016 19:26:19, Muhammad Surya: di folder | |
var/cache | |
semua config Symfony tersimpan. Ketika Symfony melakukan booting pada mode production, semua config yang kalian buat tidak akan dianggap | |
07.10.2016 19:27:02, Ahmad: Lanjut | |
07.10.2016 19:27:04, Muhammad Surya: sehingga ketika production, kalian tidak bisa melakukan hotfix config semisal ketika mau pindah database, tinggal ubah hostname, port, nama db, dll | |
07.10.2016 19:27:48, Muhammad Surya: merubah config di production tidak akan mengakibatkan perubahan apapun | |
07.10.2016 19:28:27, Muhammad Surya: Bagaimana cara merubah config ketika production? dengan cara merubah config seperti biasa dan dilanjutkan dengan populate cache (di Symfony disebut cache warming) | |
07.10.2016 19:29:38, Muhammad Surya: Ok untuk file AppKernel.php sudah sedikit paham harus diapakan? Kalian tidak perlu merubah apapun kecuali para method | |
registerBundles() | |
, itu pun jika kalian akan menambahkan bundle dari luar | |
07.10.2016 19:30:02, Ahmad: Apakah ini berarti generate ulang cache atau reset cache | |
07.10.2016 19:30:41, Muhammad Surya: Betul... Dan yang digenerate haruslah production cache bukan development cache π | |
07.10.2016 19:30:47, Muhammad Surya: nanti akan diterangkan bedanya π | |
07.10.2016 19:30:57, Ahmad: Ok, lanjut om | |
07.10.2016 19:31:24, Muhammad Surya: Lalu ada AppCache.php π file ini biasanya digunakan ketika production | |
07.10.2016 19:31:59, Muhammad Surya: tapi hati-hati bagi yang belum mengenal apa itu http cache atau browser cache π salah-salah nanti malah bingung karena datanya tidak fresh | |
07.10.2016 19:32:16, Muhammad Surya: ketika di edit ke save tapi datanya tetap alias tidak berubah | |
07.10.2016 19:33:10, Muhammad Surya: secara umum file | |
AppCache.php | |
tidak perlu diubah2 | |
07.10.2016 19:33:22, Muhammad Surya: Ok, lanjut ke folder config | |
07.10.2016 19:33:28, Muhammad: ok | |
07.10.2016 19:33:55, Iqbal: lanjuuut.... | |
07.10.2016 19:33:57, Muhammad Surya: di folder config ini lah file2 config kita disimpan | |
07.10.2016 19:34:14, Nur Rahmat Taufik(you): yuk lanjut folder config | |
07.10.2016 19:34:19, Muhammad Surya: mulai dari config aplikasi parameter routing hingga security | |
07.10.2016 19:34:45, Muhammad Surya: file config utama adalah config.yml | |
07.10.2016 19:35:04, Muhammad Surya: oiya config di Symfony bisa berubah yml, xml, php, ataupun annotation | |
07.10.2016 19:35:18, Feisal: Gimana cara rubah nya om? | |
07.10.2016 19:35:32, Muhammad Surya: Ngerubah apa? | |
07.10.2016 19:35:45, Feisal: Itu dari yml ke php gitu? | |
07.10.2016 19:36:05, Ahmad: Bisa berupa kayaknya | |
07.10.2016 19:36:19, Muhammad Surya: sorry typo | |
07.10.2016 19:36:26, Muhammad Surya: berupa itu maksudnya | |
07.10.2016 19:36:32, Feisal: Owh gitu | |
07.10.2016 19:36:38, Feisal: Lanjut om, | |
07.10.2016 19:36:41, Muhammad Surya: tapi memang bisa menggunakan php (tidak umum) ataupun xml | |
07.10.2016 19:37:01, Muhammad Surya: best practise pakai yml untuk private bundle (aplikasi) | |
07.10.2016 19:37:08, Feisal: Kalau mau pake yg php kita buat lagi atau gmna om? | |
07.10.2016 19:37:22, Muhammad Surya: dan xml untuk distribution bundle | |
07.10.2016 19:38:11, Muhammad Surya: distribution bundle maksudnya bundle yang tujuannya untuk digunakan lagi | |
07.10.2016 19:38:14, Muhammad Surya: https://github.com/SymfonyId/SymfonyIdAdminBundle/blob/master/Resources/config/routes.xml | |
07.10.2016 19:38:18, Muhammad Surya: contohnya itu | |
07.10.2016 19:38:50, Muhammad Surya: saya belum pernah pakai php config, harusnya tinggal buat file php trus di daftarkan di config.yml | |
07.10.2016 19:39:06, Muhammad Surya: didalamnya tinggal return array(key => value); | |
07.10.2016 19:40:04, Muhammad Surya: ok mari kita buka file config_<env>.yml | |
07.10.2016 19:40:12, Muhammad Surya: gampangnya config_dev.yml | |
07.10.2016 19:40:34, Muhammad Surya: imports: | |
- { resource: config.yml } | |
07.10.2016 19:40:43, Muhammad: ok | |
07.10.2016 19:41:01, Muhammad Surya: perhatikan baris itu π semua config_<evn>.yml akan mengeload file config.yml | |
07.10.2016 19:41:08, Muhammad Surya: sehingga config inti sebenarnya adalah config.yml | |
07.10.2016 19:41:11, Feisal: Iya ada om | |
07.10.2016 19:41:43, Feisal: Yg automapping di config guna nya apa ya om? | |
07.10.2016 19:41:45, Muhammad Surya: disana ada string biasa ada juga yang menggunakan notasi | |
%secret% | |
07.10.2016 19:41:56, Muhammad Surya: %<key>% | |
07.10.2016 19:42:05, Muhammad Surya: ada yang tau itu maksudnya apa? | |
07.10.2016 19:42:37, Nur Rahmat Taufik(you): artinya menginclude config.yml ya | |
07.10.2016 19:43:02, Muhammad Surya: Coba buka file parameters.yml π | |
07.10.2016 19:43:07, Iqbal: ngambil dari variabel lain yah ? | |
07.10.2016 19:43:31, Muhammad Surya: setiap | |
%<key>% | |
ada disana, bener ga? | |
07.10.2016 19:43:41, Feisal: Ada om | |
07.10.2016 19:43:52, Muhammad Surya: kecuali | |
%kernel*% | |
07.10.2016 19:44:12, Ahmad: Lanjut | |
07.10.2016 19:44:32, Feisal: Kalau kernel kenapa beda om? | |
07.10.2016 19:44:47, Muhammad Surya: Itu diregister secara internal oleh Symfony | |
07.10.2016 19:45:19, Muhammad Surya: oiya untuk sebuah key dapat dikenali dan digunakan menggunakan | |
%<key>% | |
07.10.2016 19:45:45, Feisal: Key itu kaya variabel gitu y om? | |
07.10.2016 19:45:46, Muhammad Surya: kalian harus mendaftarkannya dibawah key | |
parameters | |
07.10.2016 19:45:59, rudjok: termasuk %locale% juga? | |
07.10.2016 19:46:30, Muhammad Surya: dia sama seperti yang lain π ada dibawah block | |
parameters | |
07.10.2016 19:46:37, Muhammad Surya: bisa di cek di config.yml | |
07.10.2016 19:46:41, Muhammad Surya: parameters: | |
locale: en | |
07.10.2016 19:46:47, Muhammad Surya: ada seperti itu harusnya | |
07.10.2016 19:46:56, Feisal: Iya ada om | |
07.10.2016 19:47:09, rudjok: ahh, iya ada | |
07.10.2016 19:47:35, Muhammad Surya: jadi gini π Di Symfony, kalian boleh mendefinisikan parameters dimanapun selama itu diload maka ia bisa digunakan menggunakan notasi | |
%<key>% | |
07.10.2016 19:47:58, Muhammad Surya: tapi best practice-nya ditaruh di parameters.yml | |
07.10.2016 19:48:07, Muhammad Surya: hehehe ada yang bertanya? | |
07.10.2016 19:48:35, Muhammad Surya: Mungkin iseng, kenapa kok | |
%locale% | |
tidak ditaruh di parameters.yml juga? kenapa nyempil sendirian | |
07.10.2016 19:48:40, Muhamad: secara default symfony memberi tempat untuk parameter custom di file parameters.yml itu ya om | |
07.10.2016 19:48:53, Muhammad Surya: Yup | |
07.10.2016 19:48:57, Muhamad: kecuali locale itu | |
07.10.2016 19:49:13, Muhamad: klo bole tau locale itu bahasa untuk pengkodingan | |
07.10.2016 19:49:32, Iqbal: karna ini ya om ? | |
07.10.2016 19:49:32, Iqbal: Put parameters here that don't need to change on each machine where the app is deployed | |
07.10.2016 19:50:15, Muhammad Surya: Yup | |
07.10.2016 19:50:43, Muhamad: ?? | |
07.10.2016 19:50:58, Feisal: Owhh gitu | |
07.10.2016 19:51:21, Muhammad Surya: tadinya locale juga ditaruh di parameters.yml diawal2 cuma karena ketika install pertama kali file parameters.yml itu selalu digenerate maka kadang user/client itu ganti ke locale yang tidak diregister di translation domain | |
07.10.2016 19:51:32, Muhammad Surya: jadi agar konsisten maka ditaruhlah disitu | |
07.10.2016 19:51:48, Muhammad Surya: masalah translation dan translation domain nanti aja | |
07.10.2016 19:52:02, Muhammad Surya: bukan dia untuk translation | |
07.10.2016 19:52:06, Iqbal: oke om.. | |
07.10.2016 19:52:11, Muhamad: oke om | |
07.10.2016 19:52:56, Muhammad Surya: sebenarnya paramaters symfony itu banyak banget secara default | |
07.10.2016 19:53:07, Muhammad Surya: php bin/console debug:container --parameters | |
07.10.2016 19:53:22, Muhammad Surya: bisa jalankan itu untuk melihat semua parameters yang terdaftar | |
07.10.2016 19:53:57, Muhammad Surya: bagaimana, banyak kan ya? | |
07.10.2016 19:54:03, Iqbal: waw lumayan banyak yah | |
07.10.2016 19:54:13, Feisal: Keluar banyaak | |
07.10.2016 19:54:57, Muhammad Surya: coba kalian buat key di parameters.yml dan kemudian jalanin lagi command-nya apakah parameters kalian terdaftar atau tidak | |
07.10.2016 19:55:17, Muhammad Surya: oiya untuk yml usahakan pakai spasi ya bukan tab | |
07.10.2016 19:56:18, Muhammad Surya: Ok lanjut atau bagaimana? | |
07.10.2016 19:56:26, Muhamad: lanjutt om | |
07.10.2016 19:56:33, Muhammad: gini masbrow... | |
07.10.2016 19:56:41, Muhammad Surya: Yup | |
07.10.2016 19:56:50, Iqbal: iya ada om.. | |
07.10.2016 19:57:07, Muhammad: mungkin bisa dijelasin lebih detil tentang config yml | |
07.10.2016 19:57:18, Feisal: Ga ada da om parameter yg udh saya buat | |
07.10.2016 19:57:27, Feisal: Ga muncul di list | |
07.10.2016 19:57:39, Muhammad: dalam hal ini custome yml, misalnya kita mo buat generate code | |
07.10.2016 19:57:41, Muhammad Surya: Ok siap om setelah ini ya π masih parameters dulu | |
07.10.2016 19:58:08, Muhammad Surya: pastikan ngeset-nya sejajar key yang lainnya | |
07.10.2016 19:58:15, Muhammad Surya: gimana muncul tidak | |
07.10.2016 19:58:16, Ahmad: Lanjut | |
07.10.2016 19:58:24, Muhammad: klo di phpstorm tinggal klik sebelah kanan dia bakal lari ke configuration class | |
07.10.2016 19:58:30, Nur Rahmat Taufik(you): | |
07.10.2016 19:58:42, Muhammad: sory kiri | |
07.10.2016 19:58:42, Muhammad Surya: Kebanyakan :: | |
07.10.2016 19:59:00, Nur Rahmat Taufik(you): oh iya typo saya | |
07.10.2016 19:59:06, rudjok: nongol, om | |
07.10.2016 19:59:27, Feisal: Eh iya ada om parameter nya, salah naro tadi | |
07.10.2016 19:59:39, Muhammad Surya: Wah nanti om, soalnya kalau bikin custom config class itu udah intermediate mungkin pertemuan ke 4 atau ke 5 | |
07.10.2016 19:59:49, Muhammad Surya: Ok seeepppppp | |
07.10.2016 20:00:14, Muhammad: siappp | |
07.10.2016 20:00:39, Muhammad Surya: Balik lagi ke file config.yml π | |
disana kan ada root key | |
framework | |
, | |
twig | |
, dll | |
07.10.2016 20:00:45, Muhammad Surya: betul kan? | |
07.10.2016 20:00:59, Ahmad: Muncul parameternya | |
07.10.2016 20:01:03, rudjok: sip, ada | |
07.10.2016 20:01:09, Feisal: Iy ada | |
07.10.2016 20:01:12, Muhammad Surya: Itu semua merujuk ke bundle | |
07.10.2016 20:01:45, Feisal: Bundle ada di folder mana ya om? | |
07.10.2016 20:01:46, Muhammad Surya: jadi misal | |
twg | |
itu kemungkinan besar (karena bisa custom) berasal dari TwigBundle | |
07.10.2016 20:02:15, Muhammad Surya: Dimana aja asal dicover sama composer autoload-nya | |
07.10.2016 20:02:49, Muhammad Surya: Misal TwigBundle, bisa dicek di AppKernel.php kalau ada | |
TwigBundle | |
disana | |
07.10.2016 20:03:40, Muhammad Surya: gimana ada kan ya? | |
07.10.2016 20:03:43, Feisal: Iya ada om | |
07.10.2016 20:03:44, Muhamad: ada om | |
07.10.2016 20:03:52, Muhammad Surya: new Symfony\Bundle\TwigBundle\TwigBundle(), | |
07.10.2016 20:04:05, Ahmad: Di folder vendor ya | |
07.10.2016 20:04:11, Feisal: Iya om, buat apaan itu om? | |
07.10.2016 20:04:40, Muhammad Surya: Iya secara default semua akan masuk ke folder itu semua bundle maupun library lainnya | |
07.10.2016 20:04:46, Muhammad Surya: Yang mana? | |
07.10.2016 20:05:09, Feisal: Yg bundle? | |
07.10.2016 20:05:30, Muhammad Surya: Bundle itu sama seperti Module di Zend Framework, Package di Laravel | |
07.10.2016 20:05:49, Feisal: Kalau di ci apaan om? :v | |
07.10.2016 20:05:58, Muhammad Surya: Ga ada di CI hehehe | |
07.10.2016 20:06:08, Muhammad Surya: mungkin module HMVC | |
07.10.2016 20:06:25, Nur Rahmat Taufik(you): bedanya autoload di folder app dan vendor apa? | |
07.10.2016 20:06:29, Feisal: Owh kaha hmvc toh | |
07.10.2016 20:07:13, Ahmad: Mungkin third party | |
07.10.2016 20:07:15, Muhammad Surya: Di app dia cuma ngeregister composer autoloader | |
07.10.2016 20:08:25, Muhammad Surya: Sama sedikit bumbu untuk mendaftarkan semua class yang diload sama composer untuk bisa dibaca sama annotation reader-nya Doctrine | |
07.10.2016 20:09:02, Muhammad Surya: Oiya hampir 100% fitur annotation di PHP driver reader-nya pakai Doctrine punya termasuk Symfony π | |
07.10.2016 20:09:45, Feisal: Apaan lagi tu om :v | |
07.10.2016 20:09:56, Muhammad Surya: Apanya sal? | |
07.10.2016 20:10:33, Feisal: Php driver reader nya pake doctrine? Doctrine apaan om? | |
07.10.2016 20:10:58, Nur Rahmat Taufik(you): annotation itu seperti apa? | |
07.10.2016 20:11:09, Muhammad Surya: http://www.doctrine-project.org/projects/orm.html | |
07.10.2016 20:11:11, Muhammad: doctrine PHP ORM | |
07.10.2016 20:11:24, Muhammad: sama kaya entity framework di .net | |
07.10.2016 20:11:32, Muhammad: atw hibernate di java | |
07.10.2016 20:12:00, Muhammad Surya: /** | |
* @Route("/", name="homepage") | |
*/ | |
Itu contoh annotation (src: @AppBundle/Controller/DefaultController.php) | |
07.10.2016 20:12:15, Feisal: Owh kaya hibernate, oke thanks | |
07.10.2016 20:12:17, Muhammad Surya: bisa dicek di file-nya langsung π | |
07.10.2016 20:12:32, Nur Rahmat Taufik(you): oh comment | |
07.10.2016 20:12:37, Nur Rahmat Taufik(you): block comment: annotation | |
07.10.2016 20:13:20, Muhammad Surya: Yup block comment yang memiliki makna dan manipulatif (dapat merubah logic program) | |
07.10.2016 20:14:07, Muhammad Surya: Ok, jadi kesimpulannya | |
bahwa root key di config.yml itu (selain yang keyword ya) berasal dari konfigurasi bundle | |
07.10.2016 20:14:26, Muhammad Surya: Setiap bundle punya root key configuration-nya masing2 | |
07.10.2016 20:14:34, Nur Rahmat Taufik(you): seandainya mau membuat block comment, buat mbedain mana yang benar2 comment dan annotation bagaimana? | |
07.10.2016 20:15:18, Muhammad Surya: use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route | |
Annotation adalah class PHP yang perlu di load | |
07.10.2016 20:15:37, Muhammad Surya: jadi kalau ga diload dan bukan reserved keyword php doc | |
07.10.2016 20:15:54, Muhammad Surya: annotation reader akan menampilkan error | |
07.10.2016 20:16:11, Muhammad Surya: ok annotation nanti dulu ya, balik lagi ke config dulu sebentar | |
07.10.2016 20:16:29, Feisal: Oke om | |
07.10.2016 20:16:32, Nur Rahmat Taufik(you): oke | |
07.10.2016 20:16:33, Ahmad: Ok | |
07.10.2016 20:16:42, Muhammad Surya: Di config.yml kan ada | |
framework | |
, | |
doctrine | |
, dll | |
07.10.2016 20:16:59, Feisal: Iya? | |
07.10.2016 20:17:12, Muhammad: mungkin biar ga bingung bedain komen dan php doc itu dari awalnya komen = // php doc = /** | |
07.10.2016 20:17:40, Muhammad Surya: nah bagaimana cara mendaftarkan konfigurasi bundle kita? setiap bundle itu sebenarnya punya config-nya masing2 | |
07.10.2016 20:17:47, Feisal: Komen // cuma satu baris kan ya? | |
07.10.2016 20:18:06, Muhammad Surya: termasuk AppBundle yang merupakan bundle kerja kita | |
07.10.2016 20:19:28, Muhammad Surya: syarat agar bisa terdaftar adalah dengan membuat folder DependencyInjection yang didalamnya terdapat file AppExtension.php | |
07.10.2016 20:19:52, Muhammad Surya: <NamaBundleTanpaSurfixBundle>Extension.php | |
07.10.2016 20:19:55, Muhammad Surya: begitu formatnya | |
07.10.2016 20:20:24, Muhammad Surya: # Swiftmailer Configuration | |
swiftmailer: | |
transport: "%mailer_transport%" | |
host: "%mailer_host%" | |
username: "%mailer_user%" | |
password: "%mailer_password%" | |
spool: { type: memory } | |
app: | |
07.10.2016 20:20:33, Nur Rahmat Taufik(you): ditaruh dimana folder DependencyInjection | |
07.10.2016 20:20:48, Muhammad Surya: monggo coba tambahkan app seperti diatas dibawah swiftmailer | |
07.10.2016 20:20:52, Feisal: Di dalem folder vendor bukan? | |
07.10.2016 20:21:03, Muhammad Surya: Sejajar folder Controller, tapi itu nanti dulu ya π | |
07.10.2016 20:21:52, Muhammad Surya: ok sudah ditambahkan app: diakhir config.yml? | |
07.10.2016 20:21:57, Muhamad: sudah om | |
07.10.2016 20:22:07, Feisal: Udah om | |
07.10.2016 20:22:20, Nur Rahmat Taufik(you): sudah saya tambahin app di bawah swiftmailer | |
07.10.2016 20:22:23, Ahmad: Sudah | |
07.10.2016 20:22:33, Muhammad Surya: jalankan php bin/console (nanti kalau aku nyebut console berarti maksudnya symfony console ya) | |
07.10.2016 20:22:35, Iqbal: sudah om | |
07.10.2016 20:22:53, Muhammad Surya: jalanin console-nya ketikin php bin/console langsung enter aja π | |
07.10.2016 20:22:55, Muhammad Surya: apa yang terjadi? | |
07.10.2016 20:23:04, Nur Rahmat Taufik(you): error | |
07.10.2016 20:23:12, Feisal: Error | |
07.10.2016 20:23:17, Muhammad Surya: yang lain? | |
07.10.2016 20:23:18, Nur Rahmat Taufik(you): [Symfony\Component\Config\Exception\FileLoaderLoadException] | |
There is no extension able to load the configuration for "app" | |
07.10.2016 20:23:28, Muhammad Surya: ada yang ga error? | |
07.10.2016 20:23:31, Muhammad Surya: π | |
07.10.2016 20:23:36, Iqbal: error om | |
07.10.2016 20:23:55, Muhammad Surya: hahaha ok | |
07.10.2016 20:24:17, Muhammad Surya: memang harusnya seperti itu karena kita belum membuat extension untuk bundle kita | |
07.10.2016 20:24:55, Muhammad Surya: Jadi kesimpulannya, kita tidak bisa asal mendaftarkan root key config di Symfony π semua ada aturannya | |
07.10.2016 20:25:28, Ahmad: Gak error om | |
07.10.2016 20:25:30, Muhammad Surya: jadi config-nya bersih banget π kalau mau nambahin yang tanpa perlu pengecekan bisa lewat key parameters tadi | |
07.10.2016 20:25:38, Muhammad Surya: yang benar? | |
07.10.2016 20:25:55, Feisal: Owh jadi biar ga error lewat parameter ya | |
07.10.2016 20:25:59, Muhammad Surya: yup | |
07.10.2016 20:26:10, Ahmad: Error om, tadi belum disave, heheh | |
07.10.2016 20:26:17, Muhammad Surya: π | |
07.10.2016 20:26:24, Muhammad Surya: | |
07.10.2016 20:26:39, Feisal: | |
07.10.2016 20:26:52, Muhammad Surya: Ok setelah config, kita turun satu level lagi ke routing.yml | |
07.10.2016 20:27:15, Feisal: Ada resource ama type | |
07.10.2016 20:27:36, Muhammad Surya: seperti biasa <file>_<env>.yml itu artinya dia jalan di mode apa | |
07.10.2016 20:27:45, Muhammad Surya: bisa dilihat di routing.yml | |
07.10.2016 20:28:00, Muhammad Surya: itu ada type: annotation π | |
07.10.2016 20:28:15, Feisal: Iya ada om | |
07.10.2016 20:28:42, Muhammad Surya: itu artinya folder @AppBundle<ini otomatis akan dapetin real path dari AppBundle)/Controller/ | |
07.10.2016 20:28:57, Muhammad Surya: routing-nya menggunakan annotation routing | |
07.10.2016 20:29:17, Muhammad Surya: bisa di cek di DefaultController.php | |
07.10.2016 20:29:49, Muhammad Surya: Ok bingung ga untuk routing? | |
07.10.2016 20:29:58, Feisal: Bingguung | |
07.10.2016 20:30:05, Muhammad Surya: bingung kenapa sal? | |
07.10.2016 20:30:24, Muhammad Surya: Oiya untuk lebih dalam lagi, bisa lihat routing_dev.yml | |
07.10.2016 20:30:34, Muhammad Surya: disitu ada cara import routing dari bundle lain π | |
07.10.2016 20:30:47, Muhammad Surya: oiya sorry ke toilet dulu π monggo dipahami dulu routingnya | |
07.10.2016 20:31:10, Feisal: Kan kalau di ci mah kalah routing itu tinggal nama alias ama letak function nya, kalau ini beda bgt om | |
07.10.2016 20:33:15, Iqbal: i see om , itu jadi nanti nya dia ngeload semua controller yang ada di AppBundle/Controller lalu nge baca annotaion / block comment nya untuk nama route nya yah ? | |
07.10.2016 20:33:45, Iqbal: btw untuk route ini ada perbedaan method nya ga ? kaya get, post, put, delete ? | |
07.10.2016 20:33:48, Muhammad: http://symfony.com/doc/current/routing.html <-- dicek dulu brow | |
07.10.2016 20:33:49, Muhammad Surya: Lupakan semua tentang CI | |
07.10.2016 20:34:11, Muhammad Surya: Kosongkan pikiran, kosongkan... makin dalam makin kosong wkwkwk | |
07.10.2016 20:34:22, Feisal: Wkwkw iya abis masih bingung :v proses adaptasi om | |
07.10.2016 20:34:30, Muhammad Surya: Ada π nanti akan dijelaskan lebih dalam | |
07.10.2016 20:34:45, Feisal: Ampun jangan hipnotis saya om, gandakan jodoh saya saja π | |
07.10.2016 20:35:05, Muhammad Surya: Ok routing tidak ada masalah ya π | |
07.10.2016 20:35:24, Muhammad Surya: Nanti dirimu bakalan tau kalau routing model CI or YII itu banyak kurangnya | |
07.10.2016 20:35:42, Muhammad: oks, btw g cuma annotation aj kan brow, bisa xml, yml, plain php | |
07.10.2016 20:35:47, Muhammad Surya: intinya auto route itu ada kekurangannya | |
07.10.2016 20:36:19, Feisal: Apaan om kurang nya? | |
07.10.2016 20:36:23, Muhammad Surya: Yup karena balik lagi, routing itu masuk dalam config sehingga bisa menggunakan annotation, xml, yml maupun php | |
07.10.2016 20:36:40, Muhammad Surya: Diluar aja ntar ya π disini ga usah mbahas kekurangan framework lain π | |
07.10.2016 20:36:51, Muhammad Surya: Ok masuk ke security.yml | |
07.10.2016 20:36:52, Feisal: Owh oke om sorry | |
07.10.2016 20:37:04, Muhammad Surya: # To get started with security, check out the documentation: | |
# http://symfony.com/doc/current/book/security.html | |
security: | |
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers | |
providers: | |
in_memory: | |
memory: ~ | |
firewalls: | |
# disables authentication for assets and the profiler, adapt it according to your needs | |
dev: | |
pattern: ^/(_(profiler|wdt)|css|images|js)/ | |
security: false | |
main: | |
anonymous: ~ | |
# activate different ways to authenticate | |
# http_basic: ~ | |
# http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate | |
# form_login: ~ | |
# http://symfony.com/doc/current/cookbook/security/form_login_setup.html | |
07.10.2016 20:37:10, Muhammad Surya: By default kaya gitu | |
07.10.2016 20:37:15, Feisal: Ada kay gitu | |
07.10.2016 20:37:21, Ahmad: Berarti routingnya kita sendiri yang mendeklarasikan | |
07.10.2016 20:37:29, Muhammad Surya: Yup kanan | |
07.10.2016 20:37:49, Muhammad Surya: security.yml ini yang mengatur security dan hak akses client terhadap aplikasi kita | |
07.10.2016 20:38:26, Muhammad Surya: Di Symfony berbeda sekali dengan framework yang, Symfony menerapkan Security System yang ketat | |
07.10.2016 20:38:49, Muhammad Surya: dia menggunakan Firewall, Access Control List, Decision Manager, dll | |
07.10.2016 20:38:58, Muhammad Surya: tapi dibahasnya nanti aja untuk point2 diatas | |
07.10.2016 20:40:13, Muhammad: ok.. | |
07.10.2016 20:40:17, Iqbal: iya lanjut om.. | |
07.10.2016 20:40:41, Muhammad: untuk urusan security confignya di doc symfony rada ribet euy. | |
07.10.2016 20:40:54, Nur Rahmat Taufik(you): Lanjuuut | |
07.10.2016 20:41:16, Feisal: Oke om | |
07.10.2016 20:43:17, Muhammad Surya: sorry tadi bos minta editin promo π | |
07.10.2016 20:43:35, Muhammad: π | |
07.10.2016 20:43:43, Muhammad Surya: oiya security di Symfony bikin kita lepas dari bahaya perubahan requirement yang berhubungan dengan hak akses | |
07.10.2016 20:44:46, Muhammad Surya: jadi biasanya kita kalau ngoding page yang butuh login kan begini kira2 | |
$this->session->userdata('X') is exist | |
07.10.2016 20:45:08, Muhammad Surya: Di Symfony itu ga usah... Programmu ga akan berubah walaupun ada perubahan requirement | |
07.10.2016 20:45:34, Muhammad Surya: Memang lumayan ribet π saya baru masuk tahun kedua mulai mengerti π awalnya saya ga pernah pakai π | |
07.10.2016 20:45:51, Muhammad Surya: Ok di Security akan dibahas khusus jadi lanjut ke services.yml | |
07.10.2016 20:45:57, Muhammad Surya: yang isinya adalah kosong | |
07.10.2016 20:45:58, Muhammad Surya: :D | |
07.10.2016 20:46:00, Muhammad Surya: bener ga? | |
07.10.2016 20:46:04, Nur Rahmat Taufik(you): saya mulai dari awal, nol -___- | |
07.10.2016 20:46:29, Feisal: Ada parameter lagi euy | |
07.10.2016 20:46:31, Nur Rahmat Taufik(you): iya, itu di CI | |
07.10.2016 20:47:15, Feisal: Ada parameter sama service om | |
07.10.2016 20:47:58, Muhammad Surya: Yup intinya di services | |
07.10.2016 20:48:10, Muhammad Surya: itu adalah untuk mendaftarkan service2 yang kita buat | |
07.10.2016 20:48:17, Muhammad Surya: apa itu service? nanti aja ya π | |
07.10.2016 20:48:40, Iqbal: iya kosong | |
07.10.2016 20:48:43, Feisal: Oke om | |
07.10.2016 20:48:44, Muhammad Surya: Nah terakhir di touring hari ini π | |
07.10.2016 20:48:56, Muhammad Surya: mari kita buka folder kerja kita yaitu src | |
07.10.2016 20:49:05, Muhammad Surya: disana ada folder AppBundle dan AppBundle.php | |
07.10.2016 20:49:28, Feisal: Iya ada om | |
07.10.2016 20:49:40, Ahmad: Yup | |
07.10.2016 20:50:43, Muhammad Surya: AppBundle.php itu berisi class AppBundle (bundle kita) | |
07.10.2016 20:50:55, Muhammad Surya: yang didaftarkan di AppKernel.php | |
07.10.2016 20:51:12, Muhammad Surya: Nah didalam dolder AppBundle terdapat folder Controller | |
07.10.2016 20:51:29, Muhammad Surya: didalamnya file DefaultController.php | |
07.10.2016 20:52:00, Muhammad Surya: Nah gimana sampai sini sudah sedikit paham tentang tata letak folder dan config symfony? | |
07.10.2016 20:52:19, Feisal: Sudah om alhamdulillah | |
07.10.2016 20:52:35, Muhammad Surya: return $this->render('default/index.html.twig', [ | |
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, | |
]); | |
itu seperti $this->load->view di CI | |
07.10.2016 20:52:56, Muhammad Surya: Oiya setiap Action di Symfony wajib mengembalikan Response | |
07.10.2016 20:53:13, Muhammad Surya: use Symfony\Component\HttpFoundation\Response | |
07.10.2016 20:53:25, Muhammad Surya: mengembalikan object dari class itu | |
07.10.2016 20:53:34, Muhammad Surya: ok guys sudah diusir | |
07.10.2016 20:53:44, Feisal: Owh load view nya kaya gitu, kalau view nya ada banyak berarti tinggal copas code itu aja om? | |
07.10.2016 20:54:04, Muhammad Surya: ga bisa gitu sal | |
07.10.2016 20:54:12, Muhammad Surya: nanti akan dijelaskan lebih lengkap di pertemuan kdua π | |
07.10.2016 20:54:17, Muhammad Surya: Thanks ya guy... | |
07.10.2016 20:54:23, Yuan: thank you master! | |
07.10.2016 20:54:26, Muhammad Surya: Salamu'alaikum π ane pulang dulu | |
07.10.2016 20:54:29, Muhammad Surya: udah diusir | |
07.10.2016 20:54:35, Feisal: Hahaha di usir | |
07.10.2016 20:54:36, Nur Rahmat Taufik(you): Oke thanks master | |
07.10.2016 20:54:36, Yuan: wa'alaykumusallah | |
07.10.2016 20:54:40, Nur Rahmat Taufik(you): hati-hati di jalan | |
07.10.2016 20:54:41, Yuan: salam | |
07.10.2016 20:54:46, rudjok: waalaikumsalam, om. | |
07.10.2016 20:54:49, Iqbal: thanks juga om udh bagi bagi ilmu nya | |
07.10.2016 20:54:50, Feisal: Oke om thanks banget ya om, TTDJ om | |
07.10.2016 20:55:01, Iqbal: walaikumsalam.. | |
07.10.2016 20:55:01, Muhammad: oks | |
07.10.2016 20:55:02, Nur Rahmat Taufik(you): wa'alaikum salam | |
07.10.2016 20:55:04, Ahmad: Waalaikumsalam, jazakallohu khoiron | |
07.10.2016 20:55:10, rudjok: trims, om. | |
07.10.2016 20:55:17, Muhamad: wa'alaikum salam om | |
07.10.2016 20:55:19, Muhamad: terima kasih banyak om | |
07.10.2016 20:55:27, Muhammad: lanjut ya brow di FB πππ | |
07.10.2016 20:55:38, Nur Rahmat Taufik(you): Pindah lapak ke fb :v | |
07.10.2016 20:55:46, Feisal: Ayok pindah lapak | |
07.10.2016 20:57:27, Yuan: ini buka FB kok lambat amat ya. | |
07.10.2016 20:57:36, Muhammad Surya: Monggo dicoba2 dulu... Minggu depan kita masuk ke controller dan view | |
07.10.2016 20:58:24, Feisal: Oke om di tunggu | |
07.10.2016 20:58:58, Muhamad: siap om, di tunggu minggu depan ya | |
07.10.2016 22:18:07, Abdul Jabar: mantabbbbb, makasih om. ane baru sempet buka. | |
13.10.2016 16:09:17, Yuan: besok jam berapa om? | |
13.10.2016 16:09:31, Muhammad Surya: Kemungkinan seperti kemarin π | |
13.10.2016 16:09:56, Yuan: OK. | |
13.10.2016 16:10:03, Yuan: ada yang perlu dibaca buat besok? | |
14.10.2016 08:03:02, Muhammad Surya: Documentation create page with Symfony om | |
14.10.2016 08:39:59, Yuan: Siip | |
14.10.2016 08:41:54, Yuan: Yg paling menarik buat saya, cerita2 seputar symfony. Kaya krmaren cara kerja cache. Mantap. | |
14.10.2016 09:35:53, Muhammad Surya: Hahaha semoga nanti bisa membahas sampai cache management dan how cache work in Symfony dan why Symfony different with others | |
14.10.2016 15:55:15, Yuan: Mantap. Sebenarnya soal seluk beluk symfony semuanya menarik. Maklum baru kenal dan masih kecanduan. | |
14.10.2016 17:53:51, Muhammad Surya: Assalamu'alaikum guys... Jangan lupa ya hari ini jam 19.00 kita mulai | |
14.10.2016 18:23:38, Nur Rahmat Taufik(you): Wa'alaikum salam | |
14.10.2016 18:23:42, Nur Rahmat Taufik(you): Siaaap om | |
14.10.2016 18:43:30, Muhammad Surya: Wah sepi? | |
14.10.2016 18:56:14, Muhammad Surya: Guys, sudah siapkah? | |
14.10.2016 18:56:17, Muhammad Surya: Absen dulu donk | |
14.10.2016 18:58:52, rudjok: absen | |
14.10.2016 19:01:30, Nur Rahmat Taufik(you): Hadiiir | |
14.10.2016 19:01:48, Muhamad: hadirrr | |
14.10.2016 19:01:57, Muhamad: tp mash otw di jalan om | |
14.10.2016 19:02:00, Muhamad: hehehe | |
14.10.2016 19:04:03, Muhammad Surya: Bisa dimulai ga ya? | |
14.10.2016 19:04:06, rudjok: isya dlu ya, om. lanjut aj. | |
14.10.2016 19:05:29, Muhamad: kalo temen2 mau langsung mulai gpp om, insyaAllah aku bisa nyusul dari hasil diskusinya | |
14.10.2016 19:06:02, Muhammad Surya: Saya coba mulai aja ya π | |
14.10.2016 19:06:18, Muhammad Surya: Bismillah, mari kita buka sharing session kali ini π | |
14.10.2016 19:06:39, Muhammad Surya: Ok, malam ini akan mencoba membahas tentang how to create a page in Symfony | |
14.10.2016 19:06:42, Yuan: Hadir | |
14.10.2016 19:07:02, Muhammad Surya: bagaimana controller dan view berinteraksi secara lebih dalam | |
14.10.2016 19:07:24, Muhammad Surya: Untuk konfigurasi, insyAllah sudah mulai paham kan ya π | |
14.10.2016 19:07:37, Yuan: π | |
14.10.2016 19:07:59, Muhammad Surya: Sebelum lebih dalam, coba pahami gambar ini π | |
http://symfony.com/doc/current/introduction/http_fundamentals.html#the-symfony-application-flow | |
14.10.2016 19:09:13, Muhammad Surya: Ok, jika sudah bisa dipahami, mari kita mulai beraksi π | |
14.10.2016 19:09:42, Muhammad Surya: Kita buat sebuah file di folder Controller dengan nama WelcomeController.php | |
14.10.2016 19:09:43, Ahmad: Lanjut | |
14.10.2016 19:09:58, Muhammad Surya: Tau kan dimana harus buatnya? | |
14.10.2016 19:10:07, Muhammad Surya: di folder AppBundle/Controller | |
14.10.2016 19:11:18, Muhammad Surya: <?php | |
namespace AppBundle\Controller; | |
use Symfony\Component\HttpFoundation\Response; | |
class WelcomeController | |
{ | |
public function helloWolrdAction() | |
{ | |
return new Response('Hello World!'); | |
} | |
} | |
14.10.2016 19:11:22, Muhammad Surya: isinya seperti ini | |
14.10.2016 19:12:43, Muhammad Surya: Controller tersebut belum bisa kita akses via URL karena belum kita daftarkan dalam routing system. Untuk menambahkan route, karena config kita menggunakan annotation seperti yang sudah dibahas minggu lalu, maka kita bisa menambahkan routing sebagai berikut | |
14.10.2016 19:13:27, Muhammad Surya: <?php | |
namespace AppBundle\Controller; | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | |
use Symfony\Component\HttpFoundation\Response; | |
/** | |
* @Route("/hello") | |
*/ | |
class WelcomeController | |
{ | |
/** | |
* @Route("/world/") | |
* | |
* @return Response | |
*/ | |
public function helloWolrdAction() | |
{ | |
return new Response('Hello World!'); | |
} | |
} | |
14.10.2016 19:13:33, Muhammad Surya: jadinya seperti itu π | |
14.10.2016 19:14:23, Yuan: @return Response itu untuk catatan aja atau bukan? | |
14.10.2016 19:14:33, Muhammad Surya: slash | |
/hello | |
dibagian atas class Controller itu menandakan prefix dari semua route action yang ada di controller. | |
14.10.2016 19:14:45, Muhammad Surya: Yup itu cuma php doc biasa π | |
14.10.2016 19:15:06, Muhammad Surya: dan slash | |
/world/ | |
itu adalah action route | |
14.10.2016 19:15:41, Muhammad Surya: sehingga controller welcome bisa diakses menggunakan url | |
localhost:8000/hello/world | |
14.10.2016 19:16:39, Muhammad Surya: bagaimana apakah muncul>? | |
14.10.2016 19:17:54, Yuan: βοΈοΈ | |
14.10.2016 19:18:50, Muhammad Surya: Dari routing diatas, kita bisa juga melihatnya di console dengan menjalankan | |
php bin/console debug:route | |
14.10.2016 19:19:37, Muhammad Surya: Oiya, setiap action di Symfony wajib mengembalikan object Response (Symfony\Component\HttpFoundation\Response) | |
14.10.2016 19:20:32, Muhammad Surya: Sehingga bila biasanya cukup echo saja untuk menulis hello world, di Symfony, kita harus mengembalikan object Response untuk menulis hello world | |
14.10.2016 19:21:11, Muhammad Surya: Pertanyaan pasti muncul, gimana caranya passing parameter kedalam controller | |
14.10.2016 19:22:30, Muhammad Surya: /** | |
* @Route("/{name}/") | |
* | |
* @param string $name | |
* @return Response | |
*/ | |
public function helloYouAction($name) | |
{ | |
return new Response(sprintf('Hello %s', $name)); | |
} | |
14.10.2016 19:22:40, Muhammad Surya: Buat action baru seperti berikut | |
14.10.2016 19:23:25, Muhammad Surya: Kemudian kita akses menggunakan | |
localhost:8000/hello/Surya | |
14.10.2016 19:23:34, Muhammad Surya: silahkan ganti Surya dengan apapun | |
14.10.2016 19:24:01, Muhammad Surya: Nah bagaimana sudah bisa muncul? | |
14.10.2016 19:25:01, Yuan: | |
14.10.2016 19:25:55, Yuan: Yang laen lagi masak indomie? | |
14.10.2016 19:26:06, Nur Rahmat Taufik(you): Muncul | |
14.10.2016 19:26:07, Muhammad Surya: hahaha mungkin lagi dijalan | |
14.10.2016 19:26:16, Yuan: Hehehe | |
14.10.2016 19:27:07, Muhammad Surya: Kalau kita lihat, controller WelcomeController itu tidak extends pada class tertentu di Symfony | |
14.10.2016 19:28:12, Muhammad Surya: Inilah sebenarnya, bahwa di Symfony tidak ada syarat bahwa sebuah controller harus extends suatu class agar bisa dikenali | |
14.10.2016 19:29:06, Muhammad Surya: extends pada class Controller(Symfony\Bundle\FrameworkBundle\Controller\Controller) hanya diperlukan jika kita ingin menggunakan fitur2 yang ada pada class Controller tersebut | |
14.10.2016 19:29:34, Muhammad Surya: Moving forward, kita akan coba mengextends class kita sebagai berikut | |
14.10.2016 19:30:45, Muhammad Surya: <?php | |
namespace AppBundle\Controller; | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | |
use Symfony\Bundle\FrameworkBundle\Controller\Controller; | |
use Symfony\Component\HttpFoundation\Response; | |
/** | |
* @Route("/hello") | |
*/ | |
class WelcomeController extends Controller | |
{ | |
/** | |
* @Route("/world/") | |
* | |
* @return Response | |
*/ | |
public function helloWolrdAction() | |
{ | |
return new Response('Hello World!'); | |
} | |
/** | |
* @Route("/{name}/") | |
* | |
* @param string $name | |
* @return Response | |
*/ | |
public function helloYouAction($name) | |
{ | |
return new Response(sprintf('Hello %s', $name)); | |
} | |
/** | |
* @Route("/world/{name}/") | |
* | |
* @param string $name | |
* @return Response | |
*/ | |
public function helloTemplateAction($name) | |
{ | |
return $this->render('AppBundle:Welcome:hello.html.twig', array('name' => $name)); | |
} | |
} | |
14.10.2016 19:30:56, Muhammad Surya: Class controller kita akan terlihat seperti itu | |
14.10.2016 19:31:15, Muhammad Surya: Perhatikan line berikut: | |
/** | |
* @Route("/world/{name}/") | |
* | |
* @param string $name | |
* @return Response | |
*/ | |
public function helloTemplateAction($name) | |
{ | |
return $this->render('AppBundle:Welcome:hello.html.twig', array('name' => $name)); | |
} | |
14.10.2016 19:31:34, Muhammad Surya: kita nambahkan satu action lagi yang ngelink ke sebuah template | |
14.10.2016 19:32:05, Muhammad Surya: Saya mencoba memperkenalkan salah satu method yang ada di Class Controller yaitu | |
render | |
14.10.2016 19:33:04, Muhammad Surya: method ini berfungsi untuk mengembalikan response dari sebuah template... Cara kerjanya adalah memparsing template kemudian memasukkannya sebagai parameter pada class Response | |
14.10.2016 19:33:27, Muhammad Surya: sehingga dengan menggunaan method | |
render | |
kita tidak perlu lagi membuat object Response | |
14.10.2016 19:34:02, Muhammad Surya: Kita bisa langsung | |
return $this->render(); | |
14.10.2016 19:34:45, Muhammad Surya: | |
14.10.2016 19:34:55, Muhammad Surya: Silahkan buat susunan folder seperti berikut | |
14.10.2016 19:35:11, Muhammad Surya: untuk file hello.html.twig isinya adalah sebagai berikut | |
14.10.2016 19:35:22, Muhammad Surya: {% extends 'base.html.twig' %} | |
{% block body %} | |
Hello {{ name }}, Selamat Datang. | |
{% endblock %} | |
14.10.2016 19:36:05, Muhammad Surya: Silahkan dibuka url | |
localhost:8000/hello/world/Surya | |
14.10.2016 19:36:10, Muhammad Surya: untuk melihat hasilnya | |
14.10.2016 19:36:41, Muhammad Surya: Ok silahkan dicoba 3 menit ya π jika sudah ok nanti kita lanjut | |
14.10.2016 19:37:32, Yuan: sambil tanya2 ya om | |
14.10.2016 19:37:38, Muhammad Surya: yo monggo | |
14.10.2016 19:37:46, Yuan: action 1 punya route begini: | |
14.10.2016 19:37:48, Yuan: /** | |
* @Route("/{name}", name="name_page") | |
*/ | |
14.10.2016 19:37:55, Yuan: action 2: | |
14.10.2016 19:37:57, Yuan: /** | |
* @Route("/yuan", name="yuan_page") | |
*/ | |
14.10.2016 19:39:15, Yuan: kalau tadi coba, action 2 di ignore, karena urutannya setelah action 2. apa ini karena actionya di satu page? | |
14.10.2016 19:40:06, Muhammad Surya: Jadi seperti ini om, di Symfony, route yang pertama kali match akan dieksekusi | |
14.10.2016 19:40:24, Muhammad Surya: om Yuan cukup menaruh @Route("/yuan") dibagian atas | |
14.10.2016 19:40:34, Muhammad Surya: maka route tersebut akan dieksekusi | |
14.10.2016 19:40:46, Yuan: first come first serve. OK | |
14.10.2016 19:41:02, Muhammad Surya: route /yuan tidak dieksekusi karena selalu match dengan /{name} | |
14.10.2016 19:41:15, Muhammad Surya: ok bagaimana? | |
14.10.2016 19:41:24, Yuan: siip | |
14.10.2016 19:41:32, Muhammad Surya: Sudah muncul pagenya? | |
14.10.2016 19:41:48, Yuan: mari lanjut dengan twig | |
14.10.2016 19:42:40, Muhammad Surya: Ok sebelum lanjut di twig, mari kita coba pelajar maksud dari | |
'AppBundle:Welcome:hello.html.twig' | |
14.10.2016 19:42:54, Muhammad Surya: Ada yang bisa menjelaskan maksud dari string tersebut? | |
14.10.2016 19:43:06, Muhammad Surya: Dan dimana path template harus ditaruh? | |
14.10.2016 19:43:43, Muhammad Surya: Hahaha sepi π | |
14.10.2016 19:43:48, Muhammad Surya: Ok ga masalah | |
14.10.2016 19:44:01, Yuan: hehehe... biasanya taru di tempat lain | |
14.10.2016 19:44:14, Muhammad Surya: Dimana om Yuan naruhnya? | |
14.10.2016 19:44:17, Muhammad Surya: di app ya? | |
14.10.2016 19:44:25, Yuan: di app | |
14.10.2016 19:44:38, Muhammad Surya: hehehe gpp om bisa ditaruh disitu | |
14.10.2016 19:45:01, Muhammad Surya: Ok, saya coba jelaskan maksud string | |
'AppBundle:Welcome:hello.html.twig' | |
14.10.2016 19:45:13, Rifky: Sy jumat kuliah om sampe jam 9, paling pulang sy coba praktek.. liat history chat | |
14.10.2016 19:45:29, Muhammad Surya: noted rif | |
14.10.2016 19:45:39, Yuan: itu AppBundle:Welcome = dalam folder AppBundle > subfolder Welcome. begitu om? | |
14.10.2016 19:45:59, Muhammad Surya: template diatas terdapat 3 bagian yagn dipisahkan oleh : (titik dua) | |
14.10.2016 19:46:21, Muhammad Surya: AppBundle menunjukkan nama bundle tempat dimana template berada | |
14.10.2016 19:46:49, Muhammad Surya: Welcome itu artinya folder Welcome pada | |
AppBundle/Resources/views | |
14.10.2016 19:47:01, Muhammad Surya: dan index.html.twig itu adalah nama file | |
14.10.2016 19:47:21, Muhammad Surya: eh sorry hello.html.twig maksudnya | |
14.10.2016 19:47:21, Ahmad: Seperti di gambar yang diatas tadi | |
14.10.2016 19:47:34, Muhammad Surya: Betul | |
14.10.2016 19:48:09, Muhammad Surya: Pertanyaannya, bagaimana jika kita ingin menaruh template kedalam folder-folder yang lebih dalam | |
14.10.2016 19:48:29, Yuan: ohh gitu.. noted! | |
14.10.2016 19:48:33, Muhammad Surya: misal Welcome/form/hello.html.twig | |
14.10.2016 19:49:30, Muhammad Surya: kita cukup buat folder form didalam folder Welcome dan mengaksesnya sebagai berikut: | |
'AppBundle:Welcome:form/hello.html.twig' | |
14.10.2016 19:49:53, Muhammad Surya: Jadi seperti itulah kira-kira untuk flow dari controller hingga view | |
14.10.2016 19:50:00, Muhammad Surya: sampai disini ada yang perlu ditanyakan? | |
14.10.2016 19:50:41, Yuan: selama ini lebih sering model begini om: return $this->render('Welcome/index.html.twig' . siip. jadi makin paham dengan path | |
14.10.2016 19:50:45, Ahmad: Kirain pakai : lagi | |
14.10.2016 19:51:53, Ahmad: Apakah harus menyebutkan path templatenya dengan lengkap AppBundle:Welcome dst ? | |
14.10.2016 19:52:14, Muhammad Surya: ini berarti ada di folder app/views/Welcome | |
14.10.2016 19:52:43, Yuan: app/Resources/views/Welcome | |
14.10.2016 19:52:45, Muhammad Surya: Yup gan kalau ada di folder bundle, harus seperti diatas penulisannya | |
14.10.2016 19:52:58, Muhammad Surya: Oiya lupa Resources-nya π | |
14.10.2016 19:53:13, Muhammad Surya: Ok mari lebih dalam tentang how to find template | |
14.10.2016 19:53:20, Yuan: marii.... | |
14.10.2016 19:53:33, Muhammad Surya: Bagaimana Symfony menemukan template dan mana yang harus dieksekusi | |
14.10.2016 19:53:39, Muhammad Surya: Jadi seperti ini.. | |
14.10.2016 19:53:53, Muhammad Surya: sebenarnya, Symfony pertama kali mencari template pada folder app | |
14.10.2016 19:54:14, Muhammad Surya: ok sebentar kita buat asumsi dulu biar enak | |
14.10.2016 19:54:27, Muhammad Surya: 'AppBundle:Welcome:hello.html.twig' | |
14.10.2016 19:54:44, Muhammad Surya: asumsikan kita mengeload template dengan path tersebut | |
14.10.2016 19:55:30, Muhammad Surya: Nah, bagaimana Symfony bisa tau kalau path template tersebut ada di folder AppBundle/Resources/views/Welcome/hello.html.twig? | |
14.10.2016 19:55:42, Muhammad Surya: Begini jalan ceritanya | |
14.10.2016 19:56:36, Muhammad Surya: Ketika kita memanggil template melalui Symfony, Symfony sebenarnya membuat semacam priority order untuk path template | |
14.10.2016 19:57:07, Muhammad Surya: Pertama kali, Symfony akan mencari template pada folder app | |
14.10.2016 19:57:47, Ahmad: Lanjut gan | |
14.10.2016 19:57:56, Muhammad Surya: jika di folder tersebut tidak ketemu folder AppBundle, maka dia akan mencari di folder AppBundle (bundle path) | |
14.10.2016 19:58:28, Muhammad Surya: Jika tidak ditemukan juga, maka baru akan menghasilkan error | |
14.10.2016 19:58:35, Nur Rahmat Taufik(you): src/AppBundle | |
14.10.2016 19:59:09, Muhammad Surya: Yup gan... Walau kadang untuk bundle2 external bundle path bisa berada didalam folder vendor | |
14.10.2016 20:00:09, Muhammad Surya: Jadi untuk meng-override template, kita tidak perlu ngacak-ngacak bundle | |
14.10.2016 20:00:14, Muhammad Surya: mari kita coba buktikan | |
14.10.2016 20:00:43, Muhammad Surya: saya crop dulu gambarnya | |
14.10.2016 20:01:04, Muhammad Surya: | |
14.10.2016 20:01:17, Muhammad Surya: perhatikan folder AppBundle yang ada di folder app | |
14.10.2016 20:01:26, Muhammad Surya: susunannya seperti itu | |
14.10.2016 20:01:46, Muhammad Surya: lalu coba kalian isikan apa saja (biar beda dengan yang di folder AppBundle di src) | |
14.10.2016 20:01:52, Muhammad Surya: lalu jalankan kembali URLnya | |
14.10.2016 20:01:56, Muhammad Surya: bagaimana hasilnya? | |
14.10.2016 20:01:59, Muhammad Surya: monggo di share disini | |
14.10.2016 20:02:17, Muhammad Surya: Ok, sambil mencoba, saya tinggal ke toilet dulu aja | |
14.10.2016 20:02:19, Muhammad Surya: hehehe | |
14.10.2016 20:06:16, Ahmad: | |
14.10.2016 20:06:42, Muhammad Surya: Luar biasa | |
14.10.2016 20:07:06, Muhammad Surya: Ok, perlu dijelaskan ga kenapa kok harus seperti itu urutannya? | |
14.10.2016 20:07:21, Muhammad Surya: kenapa kok tidak langsung di bundle path? | |
14.10.2016 20:07:57, Nur Rahmat Taufik(you): dijelasin dong | |
14.10.2016 20:08:22, Ahmad: Bisa untuk override template dari dalam bundle ya | |
14.10.2016 20:08:32, Muhammad Surya: Yup | |
14.10.2016 20:09:05, Muhammad Surya: Issue utama dari penerapan priority order dengan folder app terlebih dahulu (justru bukan bundle terlebih dahulu) adalah fleksibilitas | |
14.10.2016 20:10:10, Muhammad Surya: Seperti yang sudah saya jelaskan diatas, ketika kita butuh mengoverride template suatu bundle external yang kita install via composer, kita cukup tinggal membuat template baru di folder app tanpa perlu merubah apapun pada bundle | |
14.10.2016 20:10:15, Muhammad Surya: sangat fleksible | |
14.10.2016 20:10:53, Muhammad Surya: Kalau urutannya dibalik, maka sampai matahari terbit dari barat, kita tidak pernah dapat mengoverride template bundle external tersebut | |
14.10.2016 20:11:17, Muhammad Surya: meski ini fitur terlihat sepele, tapi ini salah satu fitur favorit saya π | |
14.10.2016 20:11:25, Ahmad: Proses override jadi lebih gampang, luar biasa symfony | |
14.10.2016 20:11:54, Nur Rahmat Taufik(you): template bundle external yang dimaksud itu di src/AppBundle apa di App/Resources/AppBundle? | |
14.10.2016 20:11:56, Muhammad Surya: Kita bisa mengoverride apapun yang ada di bundle dengan membuat folder sesuai nama bundle di folder app | |
14.10.2016 20:12:10, Muhammad Surya: src/AppBundle | |
14.10.2016 20:12:27, Muhammad Surya: itu kebetulan AppBundle terregister didalam workspace kita | |
14.10.2016 20:12:46, Ahmad: Kalau bundlenya di dalam folder vendor ? | |
14.10.2016 20:13:18, Muhammad Surya: kalau ia ada didalam folder vendor, maka seperti itu caranya | |
14.10.2016 20:13:38, Muhammad Surya: Ga hanya didalam vendor, semua bundle mekanisme seperti itu dimana ia berada | |
14.10.2016 20:13:47, Muhammad Surya: wait saya lihatin in actionnya | |
14.10.2016 20:14:03, Ahmad: Ok, biar lebih paham | |
14.10.2016 20:14:15, Muhammad Surya: https://github.com/ad3n/Platform/tree/master/app/Resources | |
14.10.2016 20:14:18, Nur Rahmat Taufik(you): berarti kalau mau mengoverride template vendor tinggal buat folder yang sesuai namanya di folder app, hmmm | |
14.10.2016 20:14:28, Muhammad Surya: Yup | |
14.10.2016 20:14:37, Muhammad Surya: silahkan lihat in actionnya π | |
14.10.2016 20:15:08, Muhammad Surya: di link tersebut, saya mengoverride template TwigBundle dan FOSUserBundle seklaigus | |
14.10.2016 20:15:37, Muhammad Surya: saya lakukan itu, sekali lagi, tanpa perlu ngerubah apapun pada resources aslinya | |
14.10.2016 20:15:49, Muhammad Surya: sangat bersih, sangat mudah, sangat fleksibel | |
14.10.2016 20:15:56, Muhammad Surya: bagaimana? | |
14.10.2016 20:16:13, Muhammad Surya: apakah sudah mulai paham alur bagaimana symfony menemukan template? | |
14.10.2016 20:16:21, Nur Rahmat Taufik(you): template TwigBundle yang asli dimana? | |
14.10.2016 20:16:28, Muhammad Surya: di vendor | |
14.10.2016 20:17:14, Muhammad Surya: | |
14.10.2016 20:17:16, Muhammad Surya: Disitu | |
14.10.2016 20:17:22, Muhammad Surya: di vendor/symfony | |
14.10.2016 20:17:27, Muhammad Surya: monggo bisa dicek | |
14.10.2016 20:17:47, Nur Rahmat Taufik(you): saya kira di vendor/twig | |
14.10.2016 20:18:30, Muhammad Surya: bukan, itu kan library twig-nya, bundle-nya tidak disitu karena twig (meski yang bikin fabpot juga) merupakan library terpisah dari symfony | |
14.10.2016 20:18:36, Muhammad Surya: seperti Doctrine | |
14.10.2016 20:18:59, Muhammad Surya: Bagaimana sampai disini sudah paham kan bagaimana cara twig menemukan template? | |
14.10.2016 20:19:02, Muhammad Surya: bisa lanjut? | |
14.10.2016 20:19:33, Nur Rahmat Taufik(you): lanjut | |
14.10.2016 20:20:07, Muhammad Surya: Ok mari kita balik lagi ke routing | |
14.10.2016 20:20:09, Ahmad: Bisa | |
14.10.2016 20:20:18, Muhammad Surya: Back to Basic | |
14.10.2016 20:20:37, Muhammad Surya: Dalam HTTP, terdapat banyak method | |
14.10.2016 20:20:43, Muhammad Surya: atau HTTP Verb | |
14.10.2016 20:21:15, Muhammad Surya: Bagaimana caranya membatasi akses terhadap suatu action | |
14.10.2016 20:21:22, Muhammad Surya: misal | |
14.10.2016 20:21:54, Muhammad Surya: /** | |
* @Route("/world/") | |
* | |
* @return Response | |
*/ | |
public function helloWolrdAction() | |
{ | |
return new Response('Hello World!'); | |
} | |
14.10.2016 20:22:26, Muhammad Surya: Diaction itu, jika kita cek menggunakan console | |
14.10.2016 20:22:53, Muhammad Surya: via php bin/console debug:route maka method-nya akan didefinisikan sebagai ANY | |
14.10.2016 20:23:24, Muhammad Surya: alias baik tiu GET, POST, PUT, DELETE, LINK, OPTIONS dapat mengakses action tersebut | |
14.10.2016 20:23:51, Muhammad Surya: Nah misalkan kita akan membatasi, action /world/ diatas hanya bisa diakses via POST misalnya | |
14.10.2016 20:24:01, Muhammad Surya: maka kita cukup menambahkan annotation sebagai berikut | |
14.10.2016 20:24:27, Muhammad Surya: /** | |
* @Route("/world/") | |
* @Method({"POST"}) | |
* | |
* @return Response | |
*/ | |
public function helloWolrdAction() | |
{ | |
return new Response('Hello World!'); | |
} | |
14.10.2016 20:24:50, Muhammad Surya: silahkan dicoba diakses menggunakan browser, tolong hasilnya laporkan disini π | |
14.10.2016 20:28:04, rudjok: | |
14.10.2016 20:28:16, rudjok: nah lho? | |
14.10.2016 20:28:17, Muhammad Surya: Yes | |
14.10.2016 20:28:28, Muhammad Surya: Harusnya memang seperti itu | |
14.10.2016 20:28:43, Muhammad Surya: karena belum ditambahkan | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; | |
dibagian atas controller | |
14.10.2016 20:28:45, Muhammad Surya: π | |
14.10.2016 20:28:51, Muhammad Surya: monggo tambahkan itu | |
14.10.2016 20:28:57, Muhammad Surya: Dan coba akses lagi | |
14.10.2016 20:29:40, Nur Rahmat Taufik(you): @Method nya gak dikenal om | |
14.10.2016 20:29:44, rudjok: work like a charm π | |
14.10.2016 20:29:58, Muhammad Surya: Di use dulu seperti diatas π | |
14.10.2016 20:30:15, Muhammad Surya: Gimana coba di SS kesini jok hasilnya | |
14.10.2016 20:30:25, rudjok: | |
14.10.2016 20:31:21, Muhammad Surya: Yup... coba command dulu action2 dibawahnya | |
14.10.2016 20:31:34, Muhammad Surya: hehehe itu dia tetap bisa tapi maksud action dibawahnya | |
14.10.2016 20:32:06, Muhammad Surya: | |
14.10.2016 20:32:11, Muhammad Surya: Harusnya error seperti itu | |
14.10.2016 20:32:36, rudjok: oh, bawahnya gak di pake dulu ya | |
14.10.2016 20:33:16, rudjok: | |
14.10.2016 20:34:06, Muhammad Surya: Ok bisa ya? | |
14.10.2016 20:34:46, Muhammad Surya: Meski simple, fitur ini bisa memastikan kalau yang mengakses website/app kamu itu menggunakan mekanisme yang benar | |
14.10.2016 20:34:51, Muhammad Surya: bukan asal request | |
14.10.2016 20:35:54, rudjok: kok yg pertama tadi bisa ya, om? | |
14.10.2016 20:36:08, Muhammad Surya: Karena ketangkep yang /{name}/ | |
14.10.2016 20:36:26, Muhammad Surya: /** | |
* @Route("/{name}/") | |
* | |
* @param string $name | |
* @return Response | |
*/ | |
public function helloYouAction($name) | |
{ | |
return new Response(sprintf('Hello %s', $name)); | |
} | |
14.10.2016 20:36:31, Muhammad Surya: karena dia method-nya ANY | |
14.10.2016 20:36:50, Muhammad Surya: bagaimana apakah sampai disini bisa dipahami? | |
14.10.2016 20:37:56, Ahmad: Ok | |
14.10.2016 20:38:27, Muhammad Surya: Kita bisa juga menambahkan method | |
@Method({"POST", "GET"}) | |
sehingga action kita dapat diakses | |
14.10.2016 20:38:30, Nur Rahmat Taufik(you): Ya | |
14.10.2016 20:38:33, Muhammad Surya: menggunakan GET maupun POST | |
14.10.2016 20:39:05, Muhammad Surya: Ok bagaimana? | |
14.10.2016 20:39:18, Muhammad Surya: apakah dari awal sampai sini bisa dipahami? hehehe | |
14.10.2016 20:39:25, Muhammad Surya: udah mau diusir nih soalnya wkwkw | |
14.10.2016 20:39:55, Ahmad: Lumayan paham gan, mantap | |
14.10.2016 20:40:00, Muhammad Surya: oiya pertemuan besok kita akan membuat aplikasi kontak sederhana (ada relasi teble pastinya) | |
14.10.2016 20:40:22, Muhammad Surya: Untuk view saya tidak akan peduli | |
14.10.2016 20:40:41, Ahmad: Mulai konek ke db gan | |
14.10.2016 20:40:46, Muhammad Surya: yang saya ingin tekankan adalah alur dari aplikasi dan bagaimana Symfony berinteraksi dengan database | |
14.10.2016 20:41:20, Nur Rahmat Taufik(you): Siaaap om | |
14.10.2016 20:41:25, Muhammad Surya: malam ini sampai disini dulu π monggo dipelajari dan dipahami lagi π ane siap-siap pulang dulu... Soalnya gara-gara kemarin ane diusir beberapa commitan malah ketinggalan :v | |
14.10.2016 20:41:31, Muhammad Surya: ane jadi ga bisa kerja | |
14.10.2016 20:42:13, Muhammad Surya: Ok, semoga yang singkat ini bermanfaat π dan semoga yang sedikit ini bisa istiqomah | |
14.10.2016 20:42:24, Muhammad Surya: thanks semua Wassalamu'alaikum warohamtullah | |
14.10.2016 20:42:29, Ahmad: Terima kasih atas ilmunya, jazakallohu khoiron | |
14.10.2016 20:42:49, rudjok: ntab, om. thanks lagi u/ minggu ini ya. | |
14.10.2016 20:42:49, Ahmad: Waalaikumsalam warohmatullohi wabarokatuh | |
14.10.2016 20:42:57, rudjok: Waalaikumsalam warohmatullohi wabarokatuh | |
14.10.2016 20:45:06, Nur Rahmat Taufik(you): Wa'alaikim salam, hati2 di jalan | |
14.10.2016 20:45:39, Abdul Jabar: selamat malam, sory baru gabung. udah ketinggalan jauh nih kayanya | |
14.10.2016 20:46:24, Muhammad Surya: Belum kim... yang penting terus maju... insyAllah jalan udah mulai kebuka | |
14.10.2016 20:47:18, Abdul Jabar: waudh udah abis | |
14.10.2016 20:48:33, Muhammad Surya: Oiya Guys, doain, besok saya dan tim akan ada workshop startup di Bandung... Do'akan juga startup kami http://guidenesia.com bisa sukses dan menjadi product yang mampu bersaing (walau belum ada saingan) | |
14.10.2016 20:48:42, Muhammad Surya: Semoga segera dapat investor π | |
14.10.2016 20:53:00, Nur Rahmat Taufik(you): Aaamiiin, semoga sukses & lancar | |
14.10.2016 20:53:22, Muhammad Surya: Thanks semua balik dulu | |
14.10.2016 23:28:13, Yuan: mantap! wa'alaykumsalam. thank you om sur. baru balik baca lagi nih, tadi ada urusan. semoga ilmunya om sur juga terus bertambah + penuh berkah dan semua yang di group ini juga. aamiin. | |
21.10.2016 16:38:06, Nur Rahmat Taufik(you): Nanti mulai jam berapa? | |
21.10.2016 16:38:23, Muhammad Surya: Jam 7 aja sama seperti biasa π | |
21.10.2016 16:40:29, Nur Rahmat Taufik(you): Siaaap | |
21.10.2016 17:05:53, Yuan: siap master | |
21.10.2016 19:02:18, Muhammad Surya: Assalamu'alaikum | |
21.10.2016 19:02:40, rudjok: waalaikumsalam, om sur. | |
21.10.2016 19:02:48, Muhammad Surya: sudah siap kah? | |
21.10.2016 19:03:13, rudjok: mulai aja, om. | |
21.10.2016 19:03:49, rudjok: masi d jalan nih. kite balik sembari mantau. | |
21.10.2016 19:03:49, Muhammad Surya: Ok Bismillahi Arrohman Arrohim | |
21.10.2016 19:04:03, Yuan: wa'alaykumusalam om sur | |
21.10.2016 19:04:09, Muhammad Surya: Malam ini kita akan membahas tentang doctrine dan entity | |
21.10.2016 19:04:38, Yuan: aseeek. mari | |
21.10.2016 19:05:50, Muhammad Surya: Doctrine adalah ORM bawaan Symfony | |
21.10.2016 19:06:21, Muhammad Surya: Dokumentasi Doctrine bisa baca langsung di websitenya | |
21.10.2016 19:06:33, Iqbal: Mulai om.. | |
21.10.2016 19:06:38, Muhammad Surya: http://www.doctrine-project.org/projects/orm.html | |
21.10.2016 19:06:47, Muhammad Surya: atau bisa juga di Symfony | |
21.10.2016 19:07:04, Muhammad Surya: http://symfony.com/doc/current/doctrine.html | |
21.10.2016 19:07:22, Muhammad Surya: Sebelum membuat entity, ada baiknya ane jelasin dulu sedikit tentang konsep doctrine | |
21.10.2016 19:08:05, Muhammad Surya: Dalam Doctrine ada dua komponen yaitu Entity dan Repository | |
21.10.2016 19:08:48, Muhammad Surya: Entity adalah representasi dari table di database, sedangkan Repository adalah representasi dari query atau cara mendapatkan result dari suatu table | |
21.10.2016 19:10:28, Muhammad Surya: Setiap entity wajib mempunya Repository, namun kita tidak wajib membuat repository, karena bila repository dalam sebuah entity tidak didefinisikan secara eksplisit, maka doctrine akan menggunakan generic repository sebagai repository class dari entity tersebut | |
21.10.2016 19:10:37, Muhammad Surya: sampai disini bagaimana ada pertanyaan? | |
21.10.2016 19:11:19, Iqbal: Masih blm paham repository om.. | |
21.10.2016 19:11:36, Yuan: nanti kalau liat contoh langsung paham | |
21.10.2016 19:11:39, Muhammad Surya: Belum pahamnya dimana bal? | |
21.10.2016 19:11:47, Nur Rahmat Taufik(you): beda entity dengan repository | |
21.10.2016 19:12:00, Iqbal: Iya seperti nya kalo udh liat coding nya paham.. | |
21.10.2016 19:12:19, Muhammad Surya: Entity itu sama dengan table di database | |
21.10.2016 19:12:31, rudjok: generic repository tuh apa, om? | |
21.10.2016 19:12:32, Muhammad Surya: kalau Repository itu SQL (query)-nya | |
21.10.2016 19:12:41, Nur Rahmat Taufik(you): oh I see | |
21.10.2016 19:13:24, Nur Rahmat Taufik(you): entity itu seperti active record kalau di Yii ya | |
21.10.2016 19:13:37, Muhammad Surya: Generic Repository itu Repository built in di doctrine... dia cuma fungsi2 standard aja... | |
21.10.2016 19:13:49, Muhammad Surya: Model | |
21.10.2016 19:15:03, Muhammad Surya: Bagimana masih bingung? | |
21.10.2016 19:15:51, Iqbal: Jd entity itu buat ngedefinisikan table sama field gt yah ? | |
21.10.2016 19:16:02, Muhammad Surya: Yup betul | |
21.10.2016 19:16:19, Iqbal: Trs kalo repository buat ngedefinisikan query query nya ? | |
21.10.2016 19:16:26, Muhammad Surya: Betul banget bal | |
21.10.2016 19:16:48, Iqbal: Kaya semacam find atau findOne atau dll ? | |
21.10.2016 19:16:58, Iqbal: Oke oke om ngerti | |
21.10.2016 19:17:06, Muhammad Surya: Yup itu fungsi2 yang ada di Repository... | |
21.10.2016 19:17:24, Nur Rahmat Taufik(you): Oh iya entity itu model kalau di yii1 | |
21.10.2016 19:17:33, Muhammad Surya: Kalau Entity ga boleh ada itu query | |
21.10.2016 19:17:33, Nur Rahmat Taufik(you): repository itu active record di yii1 | |
21.10.2016 19:17:50, Muhammad Surya: Ok sampai sini udah agak paham ya? | |
21.10.2016 19:18:05, Ahmad: Lanjut | |
21.10.2016 19:18:09, Nur Rahmat Taufik(you): Lanjut pak, | |
21.10.2016 19:18:17, Nur Rahmat Taufik(you): biar langsung ngerti secara prakteknya aja hehe | |
21.10.2016 19:18:20, Muhammad Surya: Ok, mari kita coba lihat lagi config di parameters.yml | |
21.10.2016 19:18:39, Muhammad Surya: disana ada config koneksi database kita | |
21.10.2016 19:18:41, Muhammad Surya: bener kan? | |
21.10.2016 19:19:11, Yuan: ada | |
21.10.2016 19:19:26, Nur Rahmat Taufik(you): ada | |
21.10.2016 19:19:29, Muhammad Surya: Ok sekarang coba jalankan | |
php bin/console doctrine:database:create | |
untuk memastikan databasenya udah exist atau belum | |
21.10.2016 19:20:06, Muhammad Surya: Di Symfony kita diajarkan untuk fokus di coding ga perlu buka2 php my admin atau sejenisnya | |
21.10.2016 19:20:12, Muhammad Surya: Gimana bisa kan? | |
21.10.2016 19:20:32, Muhammad Surya: Kalau sudah exist semua database-nya mari mulai untuk membuat Entity pertama kita | |
21.10.2016 19:20:45, Muhammad Surya: Sebelumnya ane tinggal dulu ke toilet π | |
21.10.2016 19:21:47, Yuan: kalau dalang, bisa titip ke toiletnya. wehehehe | |
21.10.2016 19:23:27, Muhammad Surya: hahaha | |
21.10.2016 19:23:30, Muhammad Surya: im back | |
21.10.2016 19:23:44, Muhammad Surya: Ok, Di Symfony, Entity ditaruh di folder Entity | |
21.10.2016 19:23:55, Muhammad Surya: jadi mari kita buat folder Enttiy di dalam folder AppBundle | |
21.10.2016 19:24:22, Muhammad Surya: <?php | |
namespace AppBundle\Entity; | |
use Doctrine\ORM\Mapping as ORM; | |
/** | |
* @ORM\Entity() | |
* @ORM\Table(name="groups") | |
*/ | |
class Group | |
{ | |
/** | |
* @ORM\Column(name="id", type="integer", nullable=false) | |
* @ORM\Id | |
* @ORM\GeneratedValue(strategy="AUTO") | |
* | |
* @var int | |
*/ | |
private $id; | |
/** | |
* @ORM\Column(name="name", type="string", length=77) | |
* | |
* @var string | |
*/ | |
private $name; | |
} | |
21.10.2016 19:24:33, Muhammad Surya: Buatlah entity group seperti diatas | |
21.10.2016 19:24:35, Muhammad Surya: monggo | |
21.10.2016 19:25:10, Muhammad Surya: Gimana? sudah? | |
21.10.2016 19:25:30, Yuan: @var int << ini hanya catatan? | |
21.10.2016 19:25:36, Nur Rahmat Taufik(you): di simpan dengan nama Group.php ? | |
21.10.2016 19:25:56, Muhammad Surya: Yup | |
21.10.2016 19:26:14, Muhammad Surya: Pastinya karena wajib ikut PSR-0 | |
21.10.2016 19:26:32, Muhammad Surya: gimana sudah? | |
21.10.2016 19:26:39, Nur Rahmat Taufik(you): sudah | |
21.10.2016 19:26:47, Muhammad Surya: Kalau sudah, mari kita mulai menjadi coder pemalas | |
21.10.2016 19:27:26, Iqbal: Oke sudah om.. | |
21.10.2016 19:27:32, Muhammad Surya: php bin/console doctrine:generate:entities AppBundle:Group | |
21.10.2016 19:27:39, Muhammad Surya: jalankan perintah tersebut π | |
21.10.2016 19:27:42, Muhammad Surya: monggo | |
21.10.2016 19:27:51, Muhammad Surya: kemudian cek apa yang terjadi dengan Group.php | |
21.10.2016 19:27:55, Muhammad Surya: copas disini ya guys π | |
21.10.2016 19:28:01, Muhammad Surya: ane sekalian nyalain laptop dulu π | |
21.10.2016 19:28:38, Yuan: ohh bisa begitu ternyata. | |
21.10.2016 19:28:56, Nur Rahmat Taufik(you): punya saya | |
[RuntimeException] | |
The autoloader expected class "AppBundle\Entity\Group" to be defined in fi | |
le "/mnt/7DBF633371882F56/Coding/symfony/vendor/composer/../../src/AppBund | |
le/Entity/Group.php". The file was found but the class was not in it, the | |
class name or namespace probably has a typo. | |
21.10.2016 19:29:09, Yuan: ~/D/w/dace2 ξ° ξ master Β± ξ° bin/console doctrine:generate:entities AppBundle:Group | |
Generating entity "AppBundle\Entity\Group" | |
> backing up Group.php to Group.php~ | |
> generating AppBundle\Entity\Group | |
21.10.2016 19:29:20, Muhammad Surya: Pastiin folder Entity | |
21.10.2016 19:29:25, Muhammad Surya: dan filenya Group.ph | |
21.10.2016 19:29:29, Muhammad Surya: .php | |
21.10.2016 19:29:39, Muhammad Surya: Harusnya seperti ini hasilnya | |
21.10.2016 19:29:56, Muhammad Surya: Cache clear coba gan | |
21.10.2016 19:30:09, Yuan: | |
21.10.2016 19:30:24, Nur Rahmat Taufik(you): | |
21.10.2016 19:31:02, Muhammad Surya: Mantab om | |
21.10.2016 19:31:31, Muhammad Surya: hhhmmm itu harusnya udah bener gan | |
21.10.2016 19:32:04, Muhammad Surya: coba lagi gan | |
21.10.2016 19:32:09, Muhammad Surya: cache clear | |
21.10.2016 19:32:25, Nur Rahmat Taufik(you): cache clear lewat command seperti apa pak | |
21.10.2016 19:33:07, Nur Rahmat Taufik(you): php bin/console cache:clear ya | |
21.10.2016 19:33:10, Muhammad Surya: yup | |
21.10.2016 19:33:21, Muhammad Surya: Yang lain gimana udah bisa? | |
21.10.2016 19:33:47, Nur Rahmat Taufik(you): oh sudah bisa pak | |
21.10.2016 19:33:57, Nur Rahmat Taufik(you): blm saya save ternyata :v | |
21.10.2016 19:34:13, Muhammad Surya: wkwkwk | |
21.10.2016 19:34:15, Muhammad Surya: aduh | |
21.10.2016 19:34:18, Muhammad Surya: siap2 | |
21.10.2016 19:34:21, Yuan: huahahaha.... kaya masak air kok gak panas2. tahunya belum dinyalain kompornya | |
21.10.2016 19:34:33, Nur Rahmat Taufik(you): salah fokus mas, kurang aqua | |
21.10.2016 19:34:37, Muhammad Surya: gimana hasilnya apakah sudah ada setter getternya? | |
21.10.2016 19:34:50, Nur Rahmat Taufik(you): sudah ada setter dan getternya | |
21.10.2016 19:35:20, Muhammad Surya: ok mari lanjut | |
21.10.2016 19:35:24, Muhammad Surya: jalankan perintah | |
21.10.2016 19:35:36, Muhammad Surya: php bin/console doctrine:schema:validate | |
21.10.2016 19:35:59, Muhammad Surya: untuk memvalidasi entity kita apakah sudah benar annotation-nya | |
21.10.2016 19:36:23, Nur Rahmat Taufik(you): keluar ini, pak | |
[Mapping] OK - The mapping files are correct. | |
[Database] FAIL - The database schema is not in sync with the current mapping file. | |
21.10.2016 19:36:32, Muhammad Surya: Good | |
21.10.2016 19:36:36, Muhammad Surya: ok next step | |
21.10.2016 19:36:49, Muhammad Surya: php bin/console doctrine:schema:update --force | |
21.10.2016 19:36:52, Muhammad Surya: jalankan itu π | |
21.10.2016 19:37:09, Muhammad Surya: apa yang terjadi? | |
21.10.2016 19:37:28, Nur Rahmat Taufik(you): Updating database schema... | |
Database schema updated successfully! "1" query was executed | |
21.10.2016 19:38:13, Muhammad Surya: Nah monggo dicek di mysql masing2 apakah table groups sudah terbentuk sesuai dengan apa yang kita buat di class Group | |
21.10.2016 19:38:15, Muhammad Surya: π | |
21.10.2016 19:38:38, Iqbal: Wih ada om.. ini semacam migration di laravel yah ? | |
21.10.2016 19:39:10, Muhammad Surya: Bisa dibilang seperti itu, tapi ini semuanya otomatis tanpa perlu bikin script2an | |
21.10.2016 19:39:21, Muhammad Surya: Kalau di laravel masih bikin2 kan π | |
21.10.2016 19:39:39, Iqbal: Iya sih kalo di laravel bikin migration nya dl | |
21.10.2016 19:39:59, Iqbal: Blm model nya.. | |
21.10.2016 19:40:31, Muhammad Surya: wkwkwk lemot gan | |
21.10.2016 19:40:51, Muhammad Surya: sorry bukan jelek2in tapi di Symfony kita disuruh ngebut π | |
21.10.2016 19:41:01, Muhammad Surya: maaf2 suka keceplosan | |
21.10.2016 19:41:21, Iqbal: Bener juga om , bisa lebih cepet kalo gini caranya.. | |
21.10.2016 19:41:26, Muhammad Surya: | |
/** | |
* @ORM\Column(name="code", type="string", length=3) | |
* | |
* @var string | |
*/ | |
private $code; | |
21.10.2016 19:41:31, Iqbal: Apalagi kalo pake generator yak π | |
21.10.2016 19:41:31, Muhammad Surya: sekarang coba tambahkan itu | |
21.10.2016 19:41:36, Nur Rahmat Taufik(you): dimaafkeun :D | |
21.10.2016 19:41:53, Muhammad Surya: Nanti ada generator | |
21.10.2016 19:42:01, Muhammad Surya: Coba tambahkan code di group tadi | |
21.10.2016 19:42:22, Muhammad Surya: dan monggo lakukan step mulai dari generate entity, validate, update schema | |
21.10.2016 19:42:24, Muhammad Surya: π | |
21.10.2016 19:42:31, Muhammad Surya: Dan lihat lagi databasenya | |
21.10.2016 19:43:04, Muhammad Surya: cek file Group.php, dan cek Table groups didatabase apakah sudah sesuai dengan config? | |
21.10.2016 19:43:26, Muhammad Surya: Bagaimana? | |
21.10.2016 19:43:34, Muhammad Surya: jangan keenakan ya ini masih jauh xixixi | |
21.10.2016 19:44:07, Nur Rahmat Taufik(you): ada field baru, bernama code | |
21.10.2016 19:44:21, Muhammad Surya: seeepppp π | |
21.10.2016 19:44:34, Muhammad Surya: jadi kesimpulan apa yang didapat sampai saat ini guys? | |
21.10.2016 19:44:38, Muhammad Surya: π | |
21.10.2016 19:44:50, Nur Rahmat Taufik(you): yang validate sebenarnya buat apa | |
21.10.2016 19:45:01, Nur Rahmat Taufik(you): kenapa gak langsung update aja hehe | |
21.10.2016 19:45:10, Muhammad Surya: Apakah kita sudah satu pemikiran π bahwa Symfony membuat kita fokus tanpa perlu ngurusin database dan tengak tengok database? | |
21.10.2016 19:45:24, Muhammad Surya: Ini akan berfungsi jika nanti kita sudah bermain dengan relasi | |
21.10.2016 19:46:08, Muhammad Surya: Karena ketika bermain dengan relasi, di Doctrine ada beberapa model relasi | |
21.10.2016 19:46:27, Muhammad Surya: Bidirectorial dan Unidirectorial | |
21.10.2016 19:47:28, Muhammad Surya: Kalau menggunakan schema udpate, dia tidak akan memvalidasi relasi, selama relasi itu didefinisikan benar (dalam pendefinisian column/field yang direlasi) maka schema akan terupdate | |
21.10.2016 19:47:58, Muhammad Surya: Tapi belum tentu secara config, pendefinisian relasinya benar | |
21.10.2016 19:48:03, Muhammad Surya: jadi perlu divalidasi dulu | |
21.10.2016 19:48:12, Muhammad Surya: wait a minute tak kasih contoh | |
21.10.2016 19:48:36, Muhammad Surya: [Mapping] FAIL - The entity-class 'ORORI\CoreBundle\Entity\Barcode' mapping is invalid: | |
* The referenced column name 'barcode' has to be a primary key column on the target entity class 'ORORI\CoreBundle\Entity\TransactionDetail'. | |
[Mapping] FAIL - The entity-class 'ORORI\CoreBundle\Entity\Feedback' mapping is invalid: | |
* The field ORORI\CoreBundle\Entity\Feedback#productRating is on the inverse side of a bi-directional relationship, but the specified mappedBy association on the target-entity ORORI\CoreBundle\Entity\ProductRating#feedback does not contain the required 'inversedBy="productRating"' attribute. | |
[Database] FAIL - The database schema is not in sync with the current mapping file. | |
21.10.2016 19:48:49, Muhammad Surya: live langsung pakai Orori π | |
21.10.2016 19:49:04, Muhammad Surya: itu secara schema update bakalan berhasil diupdate dan relasi terupdate | |
21.10.2016 19:49:20, Muhammad Surya: tapi mapping-nya masih belum bener | |
21.10.2016 19:49:32, Muhammad Surya: gimana bisa dipahami @taufikherjanto ? | |
21.10.2016 19:49:46, Nur Rahmat Taufik(you): paham | |
21.10.2016 19:49:54, Muhammad Surya: Ok mari kita lanjtu | |
21.10.2016 19:50:01, Muhammad Surya: hapus lagi deh code-nya | |
21.10.2016 19:50:04, Muhammad Surya: π | |
21.10.2016 19:50:13, Muhammad Surya: ane ga perlu code π tapi ga dihapus juga ga masalah | |
21.10.2016 19:50:48, Muhammad Surya: Type data di doctrine banyak banget | |
21.10.2016 19:51:09, Muhammad Surya: dan doctrine support semua RDBMS yang menggunakan pdo | |
21.10.2016 19:51:32, Muhammad Surya: jadi buat teman-teman yang pakai mysql, postgresql, oracle, dll tetap bisa memakainya | |
21.10.2016 19:52:01, Muhammad Surya: meski di oracle ada bug karena oracle, di Doctrine makainya OCI Driver bukan PDO | |
21.10.2016 19:52:24, Muhammad Surya: Ok its time to create a crud | |
21.10.2016 19:53:06, Muhammad Surya: php bin/console doctrine:generate:crud AppBundle:Group | |
21.10.2016 19:53:17, Muhammad Surya: Iqbal : welcome to generate | |
21.10.2016 19:53:22, Muhammad Surya: monggo dijalankan | |
21.10.2016 19:53:33, Muhammad Surya: tinggal di ikuti aja π | |
21.10.2016 19:53:51, Muhammad Surya: step pertama enter, kedua yes, enter, enter, enter | |
21.10.2016 19:54:29, Muhammad Surya: Nah, secara otomatis, Doctrine akan membuatkan Crud untuk table Group | |
21.10.2016 19:54:38, Yuan: edaaan. baru tahu. hahaha | |
21.10.2016 19:54:40, Muhammad Surya: lengkap dengan form dan controllernya | |
21.10.2016 19:55:15, Muhammad Surya: tinggal jalanin | |
php bin/console server:run | |
untuk ngecek hasilnya | |
21.10.2016 19:55:24, Muhammad Surya: monggo bagi SS dimari donk | |
21.10.2016 19:55:36, Muhammad Surya: sekalian kasih waktu ane buat ngelus laptop disebelah π | |
21.10.2016 19:56:48, Iqbal: Wasik nih π | |
21.10.2016 19:56:48, Iqbal: Oke oke om.. | |
21.10.2016 19:58:07, Muhammad Surya: gimana? | |
21.10.2016 19:58:10, Muhammad Surya: mana nih SS-nya | |
21.10.2016 19:58:18, Nur Rahmat Taufik(you): | |
21.10.2016 19:58:37, Muhammad Surya: Mantab | |
21.10.2016 19:58:44, Nur Rahmat Taufik(you): | |
21.10.2016 19:58:49, Nur Rahmat Taufik(you): Keren langsung jadi | |
21.10.2016 19:59:01, Muhammad Surya: Tinggal di style ya π | |
21.10.2016 19:59:11, Muhammad Surya: Symfony form itu fully support bootstrap 3 | |
21.10.2016 19:59:46, Muhammad Surya: Ok setelah entity mari kita pindah ke form | |
21.10.2016 19:59:58, Muhammad Surya: seperti apa sih form hasil generatenya? | |
21.10.2016 20:00:02, Muhammad Surya: π ada yang mau share? | |
21.10.2016 20:00:02, Iqbal: Laptop tiba tiba lag π | |
21.10.2016 20:01:16, Muhammad Surya: <?php | |
namespace AppBundle\Form; | |
use Symfony\Component\Form\AbstractType; | |
use Symfony\Component\Form\FormBuilderInterface; | |
use Symfony\Component\OptionsResolver\OptionsResolver; | |
class GroupType extends AbstractType | |
{ | |
/** | |
* @param FormBuilderInterface $builder | |
* @param array $options | |
*/ | |
public function buildForm(FormBuilderInterface $builder, array $options) | |
{ | |
$builder | |
->add('code') | |
->add('name') | |
; | |
} | |
/** | |
* @param OptionsResolver $resolver | |
*/ | |
public function configureOptions(OptionsResolver $resolver) | |
{ | |
$resolver->setDefaults(array( | |
'data_class' => 'AppBundle\Entity\Group' | |
)); | |
} | |
} | |
21.10.2016 20:01:26, Muhammad Surya: seperti ini kah formnya? | |
21.10.2016 20:01:28, Iqbal: Ini kayanya semacam sails js nih , kalo bikin API tinggal bikin model . Crud nya langsung generate π | |
21.10.2016 20:02:08, Nur Rahmat Taufik(you): yii1 juga ada generator crud :3 | |
21.10.2016 20:02:20, Nur Rahmat Taufik(you): yii1 maupun yii2 :3 | |
21.10.2016 20:02:47, Muhammad Surya: Formnya seperti itu apa ga? | |
21.10.2016 20:03:29, Nur Rahmat Taufik(you): iya sama pak | |
21.10.2016 20:04:14, Muhammad Surya: Ok mari kita buat sedikit hack di form | |
21.10.2016 20:04:20, Muhammad Surya: biar keliatan lebih transparent | |
21.10.2016 20:05:02, Muhammad Surya: /** | |
* @param OptionsResolver $resolver | |
*/ | |
public function configureOptions(OptionsResolver $resolver) | |
{ | |
$resolver->setDefaults(array( | |
'data_class' => Group::class, | |
)); | |
} | |
21.10.2016 20:05:06, Muhammad Surya: jadi seperti itu | |
21.10.2016 20:05:13, Muhammad Surya: ingat untuk di use dulu Group-nya | |
21.10.2016 20:05:24, Muhammad Surya: $builder | |
->add('code', TextType::class) | |
->add('name', TextType::class) | |
; | |
21.10.2016 20:05:28, Muhammad Surya: Dan seperti itu | |
21.10.2016 20:07:12, Nur Rahmat Taufik(you): use AppBundle\Entity\Group ya pak? | |
21.10.2016 20:07:32, Muhammad Surya: Yup | |
21.10.2016 20:07:40, Muhammad Surya: Ok gimana hasilnya? sama aja kan? | |
21.10.2016 20:07:58, Muhammad Surya: Yang text juga jangan lupa di use | |
21.10.2016 20:08:01, Muhammad Surya: use Symfony\Component\Form\Extension\Core\Type\TextType; | |
21.10.2016 20:11:32, Muhammad Surya: Gimana guys hasilnya? | |
21.10.2016 20:11:35, Muhammad Surya: ada yang error | |
21.10.2016 20:12:09, Nur Rahmat Taufik(you): Sama aja pak | |
21.10.2016 20:12:57, Muhammad Surya: Ok dibagian form ada yang ditanyain ga? | |
21.10.2016 20:13:03, Muhammad Surya: sebelum masuk ke Controller | |
21.10.2016 20:13:32, Iqbal: Tanya om , apa pembuatan form ini tidak bisa pake html ? | |
21.10.2016 20:14:10, Muhammad Surya: bisa aja, asalah name-nya sama | |
21.10.2016 20:14:30, Yuan: kalau crud mau diupdate tambah field gimana caranya? | |
21.10.2016 20:15:49, Muhammad Surya: maksudnya gimana om? | |
21.10.2016 20:16:13, Yuan: di entity tambah private $address; | |
21.10.2016 20:16:24, Muhammad Surya: tinggal ditambahkan di form | |
21.10.2016 20:16:41, Muhammad Surya: jadi setelah update schema, tinggal dibagian form ditambahkan | |
21.10.2016 20:16:42, Yuan: maksudnya, gak bisa pake console command line lagi? | |
21.10.2016 20:16:46, Muhammad Surya: bisa om | |
21.10.2016 20:16:59, Muhammad Surya: tapi yang sudah rapi (misalkan kita udah sesuaikan) nanti jadi default lagi | |
21.10.2016 20:17:06, Nur Rahmat Taufik(you): GroupType kenapa harus ada pak? | |
21.10.2016 20:17:24, Muhammad Surya: Ga dianjurkan untuk melakukan generate crud 2X | |
21.10.2016 20:17:27, Muhammad Surya: cukup sekali aja | |
21.10.2016 20:17:38, Yuan: noted! | |
21.10.2016 20:17:54, Muhammad Surya: GroupType adalah form yang digunakan untuk memanipulasi Group entity | |
21.10.2016 20:18:04, Muhammad Surya: $resolver->setDefaults(array( | |
'data_class' => Group::class, | |
)); | |
21.10.2016 20:18:11, Muhammad Surya: perhatikan data_class | |
21.10.2016 20:18:24, Muhammad Surya: itu menentukan dengan class mana form itu dilink-kan | |
21.10.2016 20:18:45, Muhammad Surya: Jadi di Symfony, kalau kita lihat dibagian veiw-nya | |
21.10.2016 20:19:10, Muhammad Surya: {% extends 'base.html.twig' %} | |
{% block body %} | |
<h1>Group creation</h1> | |
{{ form_start(form) }} | |
{{ form_widget(form) }} | |
<input type="submit" value="Create" /> | |
{{ form_end(form) }} | |
<ul> | |
<li> | |
<a href="{{ path('group_index') }}">Back to the list</a> | |
</li> | |
</ul> | |
{% endblock %} | |
21.10.2016 20:19:30, Muhammad Surya: itu html-nya di app/views | |
21.10.2016 20:20:08, Muhammad Surya: Bagaimana untuk form apakah bisa dipahami? | |
21.10.2016 20:20:14, rudjok: hack form diatas itu biar apa ya, om? | |
21.10.2016 20:20:15, Muhammad Surya: kita santai aja belajarnya π | |
21.10.2016 20:20:41, Muhammad Surya: Biar transparent aja.... sebenarnya field-field di form itu tipe-nya apa | |
21.10.2016 20:21:17, rudjok: baru kekejar ini. tinggal jalan udah 60++ new message | |
21.10.2016 20:21:23, Iqbal: Msh blm paham yang grouptype om.. | |
21.10.2016 20:21:31, Muhammad Surya: karena by default, form akan membuat membuat berdasarkan tipe yang ada di doctrine | |
21.10.2016 20:21:41, Muhammad Surya: Monggo bal tanya aja dimana yang ga pahamnya | |
21.10.2016 20:22:01, Nur Rahmat Taufik(you): kalau dilihat dari GroupControllernya, formnya ngambil dari GroupType ternyata | |
$form = $this->createForm('AppBundle\Form\GroupType', $group); | |
21.10.2016 20:22:55, Muhammad Surya: Yup | |
21.10.2016 20:22:58, Nur Rahmat Taufik(you): (form) nya ngambil dari sini ternyata, $form = $this->createForm('AppBundle\Form\GroupType', $group); | |
21.10.2016 20:23:27, Muhammad Surya: di Symfony, HTML form diabstraksi jadi PHP Class | |
21.10.2016 20:23:38, Muhammad Surya: Jadi bersih π | |
21.10.2016 20:24:39, Yuan: $resolver->setDefaults(array( | |
'data_class' => 'AppBundle\Entity\Group' | |
)); << apa ini isinya selalu data_class aja atau ada yang lain? | |
21.10.2016 20:24:43, Muhammad Surya: Gimana apakah masih ada yang bingung tentang form? | |
21.10.2016 20:24:52, Muhammad Surya: Bisa banyak om | |
21.10.2016 20:25:12, Iqbal: Blm paham fungsi nya om.. | |
21.10.2016 20:25:25, Muhammad Surya: $resolver->setDefaults(array( | |
'data_class' => Level::class, | |
'translation_domain' => 'AppBundle', | |
)); | |
21.10.2016 20:25:31, Muhammad Surya: itu contohnya om @yuan_oktafian | |
21.10.2016 20:25:43, Nur Rahmat Taufik(you): untuk penambahan field kolom table baru, tetep jalankan | |
doctrine:schema:validate | |
doctrine:schema:update --force | |
baru, edit Form secara manual ya pak? | |
21.10.2016 20:26:05, Muhammad Surya: Ini fungsinya untuk membuat form HTML bal... Jadi disymfony ga perlu bikin form pakai | |
<form | |
dst | |
21.10.2016 20:26:15, Muhammad Surya: Yup | |
21.10.2016 20:27:05, Muhammad Surya: Gimana masih agak bingung? | |
21.10.2016 20:27:17, rudjok: jadi function buildform itu utk nentuin jenis inputnya? name & code jenisnya text? | |
21.10.2016 20:27:36, Iqbal: Oh i see , oke lanjut om.. | |
21.10.2016 20:28:18, Muhammad Surya: Yup | |
21.10.2016 20:28:27, Muhammad Surya: Ok | |
21.10.2016 20:28:37, Muhammad Surya: Ok mari kita lanjut dulu ke controller | |
21.10.2016 20:29:02, Muhammad Surya: kita langsung aja ke newAction | |
21.10.2016 20:29:06, Muhammad Surya: $group = new Group(); | |
$form = $this->createForm('AppBundle\Form\GroupType', $group); | |
$form->handleRequest($request); | |
if ($form->isSubmitted() && $form->isValid()) { | |
$em = $this->getDoctrine()->getManager(); | |
$em->persist($group); | |
$em->flush(); | |
return $this->redirectToRoute('group_show', array('id' => $group->getId())); | |
} | |
return $this->render('group/new.html.twig', array( | |
'group' => $group, | |
'form' => $form->createView(), | |
)); | |
21.10.2016 20:29:12, Muhammad Surya: seperti itu ya kira2? | |
21.10.2016 20:29:19, Muhammad Surya: ini biar nyambung sama form tadi | |
21.10.2016 20:30:00, rudjok: yup,mirip | |
21.10.2016 20:30:34, Muhammad Surya: $group = new Group(); | |
$form = $this->createForm('AppBundle\Form\GroupType', $group); | |
$form->handleRequest($request); | |
21.10.2016 20:30:38, Muhammad Surya: perhatikan dulu bari itu | |
21.10.2016 20:31:19, Muhammad Surya: pada, fungsi | |
21.10.2016 20:31:55, Muhammad Surya: createForm() | |
kita melakukan binding data antara $group (object dari data_class di form) | |
21.10.2016 20:32:01, Muhammad Surya: dan form... | |
21.10.2016 20:32:16, Muhammad Surya: mari kita sedikit berexplorasi lagi | |
21.10.2016 20:32:45, Muhammad Surya: $group = new Group(); | |
$group->setName('Symfony Indonesia'); | |
21.10.2016 20:33:01, Muhammad Surya: kita setName dengan symfony Indonesia | |
21.10.2016 20:33:09, Muhammad Surya: lalu kita buka browser dan add new | |
21.10.2016 20:33:12, Muhammad Surya: coba apa yang terjadi | |
21.10.2016 20:33:16, Muhammad Surya: monggo SSnya π | |
21.10.2016 20:33:25, Muhammad Surya: biar interaktif π | |
21.10.2016 20:34:11, rudjok: | |
21.10.2016 20:35:24, Muhammad Surya: otomatis value name-nya jadi Symfony Indonesia ya? | |
21.10.2016 20:35:39, Muhammad Surya: Kok kepotong itu? π | |
21.10.2016 20:36:02, rudjok: sengaja pake indo, om | |
21.10.2016 20:36:09, Iqbal: | |
21.10.2016 20:36:25, Muhammad Surya: ooo π seeeeppp kirain tiba2 kepotong π | |
21.10.2016 20:36:38, Muhammad Surya: Ok bal nanti tinggal diriview aja | |
21.10.2016 20:36:41, Ahmad: | |
21.10.2016 20:36:48, Muhammad Surya: Mantab | |
21.10.2016 20:37:06, Muhammad Surya: Nah sekarang sudah sedikit paham kan? | |
21.10.2016 20:37:24, Muhammad Surya: form di symfony dan data class di binding otomatis | |
21.10.2016 20:37:54, Muhammad Surya: ketika object Group memiliki value maka value itu akan ditransfer ke form | |
21.10.2016 20:37:58, Muhammad Surya: begitu juga sebaliknya | |
21.10.2016 20:38:09, Muhammad Surya: bagaimana apakah bisa dipahami? | |
21.10.2016 20:38:13, Yuan: | |
21.10.2016 20:38:39, Muhammad Surya: Save dulu sticker-nya wkwkwk | |
21.10.2016 20:38:44, Muhammad Surya: kolektor soalnya | |
21.10.2016 20:39:29, Muhammad Surya: Gimana bisa dilanjutkan? | |
21.10.2016 20:39:38, Yuan: lanjuuut | |
21.10.2016 20:39:51, Nur Rahmat Taufik(you): Lanjuuut | |
21.10.2016 20:39:59, rudjok: lanjut | |
21.10.2016 20:40:32, Ahmad: Lanjut | |
21.10.2016 20:40:41, Muhammad Surya: if ($form->isSubmitted() && $form->isValid()) { | |
$em = $this->getDoctrine()->getManager(); | |
$em->persist($group); | |
$em->flush(); | |
return $this->redirectToRoute('group_show', array('id' => $group->getId())); | |
} | |
21.10.2016 20:40:48, Iqbal: Lanjut om.. | |
21.10.2016 20:40:54, Muhammad Surya: Nah mari kita coba bedah bagian ini | |
21.10.2016 20:41:36, Muhammad Surya: if ($form->isSubmitted() && $form->isValid()) | |
<= ini memastikan kalau form sudah disubmit dan valid maka makan masuk block | |
21.10.2016 20:41:52, Muhammad Surya: $em = $this->getDoctrine()->getManager(); | |
$em->persist($group); | |
$em->flush(); | |
21.10.2016 20:42:05, Muhammad Surya: block untuk menyimpan ke databse π | |
21.10.2016 20:42:23, Muhammad Surya: ada yang aneh ga dari code diatas? | |
21.10.2016 20:43:00, Ahmad: Yang dimaksud valid apakah termasuk pengecekan panjang karakter juga dan type.datanya | |
21.10.2016 20:43:14, Muhammad Surya: Yup | |
21.10.2016 20:43:44, Muhammad Surya: nah pertemuan besok (sepertinya ga bisa dibahas malam ini) kita akan membahas tentang the power and magic of symfony validation | |
21.10.2016 20:44:12, Muhammad Surya: Oiya, validation di Symfony sudah build in dengan form ya π jadi secara otomatis sync antara form dan entity π | |
21.10.2016 20:44:21, Muhammad Surya: pertemuan depan deh akan dibahas | |
21.10.2016 20:44:26, Muhammad Surya: atau sekarang aja kali ya π | |
21.10.2016 20:44:42, Yuan: lanjut.. belum ada yang usir kan? | |
21.10.2016 20:44:57, Muhammad Surya: $em->persist($group); | |
21.10.2016 20:45:03, Muhammad Surya: ga ada yang bertanya bagian ini? | |
21.10.2016 20:45:29, Yuan: ini lagi bandingin dengan code yang udah jadi... agak aneh disitu emang | |
21.10.2016 20:45:29, Muhammad Surya: kenapa kok bisa langsung gitu aja ga perlu set ini dan itu tapi value yang diinput bisa masuk kedatabase | |
21.10.2016 20:45:48, Muhammad Surya: π form yang kalian input, dimana ngesetnya ke group? | |
21.10.2016 20:45:54, Muhammad Surya: ga ada yang bingung disitu ya? | |
21.10.2016 20:45:56, Muhammad Surya: π | |
21.10.2016 20:46:12, Yuan: itu diurus ama GroupType.php kah? | |
21.10.2016 20:46:14, Ahmad: Binding ya om | |
21.10.2016 20:46:45, Muhammad Surya: Iya om tapi ngesetnya dimana? | |
21.10.2016 20:47:01, Muhammad Surya: Yup bindingnya dimana? | |
21.10.2016 20:47:02, Muhammad Surya: π | |
21.10.2016 20:47:15, Muhammad Surya: kenapa tiba2 kok bisa pakai $group? | |
21.10.2016 20:47:23, Nur Rahmat Taufik(you): di sini $form = $this->createForm('AppBundle\Form\GroupType', $group); | |
21.10.2016 20:47:25, Nur Rahmat Taufik(you): ? | |
21.10.2016 20:47:26, Muhammad Surya: tidak ada yang bingung atau malah terlalu bingung? | |
21.10.2016 20:47:52, Ahmad: Handlerequest | |
21.10.2016 20:47:54, Muhammad Surya: Ini kan binding awal (set data awal), binding input dari view html? | |
21.10.2016 20:47:59, Muhammad Surya: nah akhirnya | |
21.10.2016 20:48:03, Muhammad Surya: betul banget | |
21.10.2016 20:48:24, Nur Rahmat Taufik(you): Oh begitu | |
21.10.2016 20:48:34, Muhammad Surya: $form->handleRequest($request); | |
ini adalah magic-nya | |
21.10.2016 20:49:15, Muhammad Surya: dimana ketika form sudah dikaitkan dengan object maka ketika handle request maka object tersebut akan diset value2nya sesuai dengan input pada form | |
21.10.2016 20:49:41, Muhammad Surya: ok mari kita hack lagi biar lebih transparent | |
21.10.2016 20:49:58, Muhammad Surya: $em->persist($form->getData()); | |
21.10.2016 20:50:02, Muhammad Surya: ganti jadi begitu | |
21.10.2016 20:50:06, Muhammad Surya: dan jalankan aplikasinya | |
21.10.2016 20:50:14, Muhammad Surya: apakah tetap bisa jalan seperti semula? | |
21.10.2016 20:50:22, Muhammad Surya: ataukah ada perubahan? | |
21.10.2016 20:51:17, Muhammad Surya: Gimana? | |
21.10.2016 20:51:24, Ahmad: Tetep bisa | |
21.10.2016 20:51:28, Muhammad Surya: sudah mendekati waktu diusir nih π | |
21.10.2016 20:51:31, Ahmad: Sama aja | |
21.10.2016 20:51:32, Muhammad Surya: tidak ada perbedaan kan? | |
21.10.2016 20:52:01, Muhammad Surya: Ok, sebagai pembuka sesi minggu depan sekaligus penutup sesi malam ini | |
21.10.2016 20:52:08, Muhammad Surya: mari kita sedikit hack di entity kita π | |
21.10.2016 20:53:08, Muhammad Surya: use Symfony\Component\Validator\Constraints as Assert; | |
21.10.2016 20:53:13, Muhammad Surya: tambahkan itu di Group | |
21.10.2016 20:53:30, Muhammad Surya: @Assert\Length(min=2, minMessage="Kurang panjang coy", max=3, maxMessage="Kepanjangan anunya") | |
21.10.2016 20:53:35, Muhammad Surya: tambahkan itu di name | |
21.10.2016 20:53:43, Muhammad Surya: atau code (kalau belum dihapus) | |
21.10.2016 20:53:48, Muhammad Surya: dimana aja lah | |
21.10.2016 20:53:55, Muhammad Surya: trus jalankan lagi insertnya | |
21.10.2016 20:54:02, Muhammad Surya: trus isikan cuma 1 character aja | |
21.10.2016 20:54:12, Muhammad Surya: lalu coba lagi isikan panjang | |
21.10.2016 20:54:17, Muhammad Surya: SS ya hasilnya | |
21.10.2016 20:54:18, Muhammad Surya: π | |
21.10.2016 20:54:29, Muhammad Surya: 5 minutes π | |
21.10.2016 20:55:28, Muhammad Surya: gimana guys? | |
21.10.2016 20:55:47, Nur Rahmat Taufik(you): ditambahkan dimana? | |
21.10.2016 20:55:56, Muhammad Surya: di Entity Group | |
21.10.2016 20:56:06, rudjok: | |
21.10.2016 20:56:23, Muhammad Surya: dibanyakin gimana jok? | |
21.10.2016 20:56:32, Ahmad: | |
21.10.2016 20:56:58, Muhammad Surya: kalau kebanyakan gimana? | |
21.10.2016 20:57:00, rudjok: | |
21.10.2016 20:57:01, Muhammad Surya: bisa juga kan pesannya | |
21.10.2016 20:57:10, Muhammad Surya: Hehehe bagaimana? | |
21.10.2016 20:57:20, Muhammad Surya: itulah the power of symfony form | |
21.10.2016 20:57:26, Ahmad: | |
21.10.2016 20:57:43, Muhammad Surya: like your message | |
21.10.2016 20:58:07, rudjok: so, rule2 nya masangnya di annotation di entity? | |
21.10.2016 20:58:14, Muhammad Surya: yup | |
21.10.2016 20:58:24, Muhammad Surya: lanjut pertemuan depan ya guys | |
21.10.2016 20:58:29, Muhammad Surya: moga makin penasaran π | |
21.10.2016 20:58:37, Muhammad Surya: semoga yang sedikit bisa menjadi jariyah bagi kita π | |
21.10.2016 20:58:43, Muhammad Surya: smoga ilmunya manfaat | |
21.10.2016 20:58:45, Muhammad Surya: terima kasih | |
21.10.2016 20:58:50, Yuan: aamiin | |
21.10.2016 20:58:57, Muhammad Surya: Wassalam π @diusirModeOn | |
21.10.2016 20:58:58, rudjok: sip3x. | |
21.10.2016 20:59:04, Ahmad: Aamiiin | |
21.10.2016 20:59:05, rudjok: thx again, om sur. | |
21.10.2016 20:59:10, rudjok: waalaikumsalam | |
21.10.2016 20:59:36, Nur Rahmat Taufik(you): Wa'alaimussalam, wr, wb | |
21.10.2016 21:31:02, Muhammad Surya: Semoga bisa paham sedikit tentang Symfony Form | |
21.10.2016 21:31:03, Muhammad Surya: Karena ini salah satu fitur powerful di Symfony | |
22.10.2016 17:15:44, Muhamad: | |
22.10.2016 17:15:57, Muhamad: alhamdulillah bisa ke kejar lagi om sur | |
22.10.2016 17:16:04, Muhamad: maaf ya 2 minggu lalu ga ikut online | |
22.10.2016 17:16:51, Muhamad: terima kasih banyak om sur, moga makin bertambah ilmunya.... | |
22.10.2016 17:19:20, Muhamad: om sur, maaf gini hari mau nanya.. | |
22.10.2016 17:20:18, Muhamad: ini alfan coba di lokal setiap kali lagi mau buka aplikasi symfony terasa lambat, itu biasanya knapa ya om ? | |
22.10.2016 17:20:41, Muhamad: alfan coba ga pake server dari symfonynya tapi pake apache | |
22.10.2016 17:20:49, Muhamad: *di jawab jum'at depan gpp ko | |
22.10.2016 17:20:53, Muhamad: terima kasih banyak.. | |
22.10.2016 19:02:03, Yuan: spesifikasi komputernya apa, alfan? | |
22.10.2016 19:02:39, Muhamad: amd A6 ram 8gb dan hdd 500gb | |
22.10.2016 19:02:59, Yuan: windows? | |
22.10.2016 19:03:11, Muhamad: iya windows 10 | |
22.10.2016 19:09:04, Yuan: belum pernah coba pakai windows, tapi spesifikasi komputernya sih udah OK banget buat symfony. | |
22.10.2016 19:18:39, Muhamad: iya om, soalnya kalo buat app yg lain lancar jaya | |
23.10.2016 05:49:01, Ahmad: Selalu lambat atau ketika buka halaman pertama kalia aja | |
23.10.2016 07:29:34, Muhamad: slalu lambat om | |
23.10.2016 08:45:18, Yuan: editornya pakai apa, alfan? | |
23.10.2016 08:45:26, Yuan: netbean? | |
23.10.2016 08:46:15, Muhammad Surya: Symfony ketika development memang berasa lambat, bisa dicek di web profiler toolbar | |
23.10.2016 08:46:43, Muhammad Surya: Memory footprint nya juga besar di php dibawah versi 7 | |
23.10.2016 08:47:25, Muhammad Surya: Tapi akan berbeda ketika menggunakan di production | |
23.10.2016 08:48:08, Muhammad Surya: Sepertinya saya pernah membahas tentang execution step di Symfony dev n prod deh diawal | |
23.10.2016 08:48:44, Muhammad Surya: Memang berbeda cara eksekusi Symfony antara dev n prod, itu yang bikin terasa lemot di dev | |
23.10.2016 09:14:08, Muhamad: text editornya alfan pake sublime | |
23.10.2016 09:14:10, Muhamad: berarti alternatifnya gmna om ? | |
23.10.2016 09:26:15, Muhammad Surya: Kalau bisa jangan pakai sublime | |
23.10.2016 09:27:14, Muhammad Surya: Ga perlu pakai web server pake built in aja | |
23.10.2016 23:52:43, Abdul Jabar: | |
23.10.2016 23:52:56, Abdul Jabar: many thx om, alhamdulillah masih bisa ngikutin | |
23.10.2016 23:55:12, Abdul Jabar: btw terkait dengan generate, default dia akan di app/resource ya. | |
kalo mau langsung biar bisa di src/AppBundle/Resources itu banyak yang di config ga ya kira kira | |
24.10.2016 08:36:18, Muhammad Surya: Override generator | |
24.10.2016 09:26:49, Abdul Jabar: langsung ubah di vendor doctrinya aja om? | |
24.10.2016 09:52:26, Muhammad Surya: Bikin sendiri extend | |
24.10.2016 13:45:31, Yuan: tapi itu kayanya karena windows aja jadi lambat. kalau ganti linux, seharusnya lebih cepat. saya udah jarang pake built in php web server. jalan langsung aja di apache. agak repot pake built in web server kalau sedang berurusan dengan output ke JSON dan harus pakai data JSON itu. perlu jalanin dua port php web server. cara lain, bisa coba nginx. mungkin membantu. | |
24.10.2016 16:41:06, Muhamad: | |
24.10.2016 16:41:35, Muhamad: @AdenKejawen app ane lemot kayanya gegara itu bukan om sur ? | |
24.10.2016 16:42:04, Muhammad Surya: Ga gan... tapi untuk memastikan, ente bisa ngecek di profilernya | |
24.10.2016 16:42:04, Muhamad: soalnya kalo blok css dan javascript itu di hilangkan normal kaya biasa waktu install | |
24.10.2016 16:42:33, Muhamad: ini maksudnya ngejek di bagian mana om sur ? | |
24.10.2016 16:42:46, Muhammad Surya: Toolbar dibagian bawah | |
24.10.2016 16:42:57, Muhammad Surya: itu toolbar sangat informative | |
24.10.2016 16:46:42, Muhammad Surya: {%- extends 'SymfonyIdAdminBundle::layout.html.twig' -%} | |
{%- block breadcrumb -%} | |
<li><a href="#" class="active">{{- page_title | upper -}}</a></li> | |
<li><a href="#" class="active">{{- (action_method ~ ' ' ~ page_title) | upper -}}</a></li> | |
{%- endblock -%} | |
{%- block page_title -%} | |
{{- page_title -}} | |
{%- endblock -%} | |
{%- block page_description -%} | |
{{- page_description -}} | |
{%- endblock -%} | |
{%- block file_style -%} | |
{{- use_file_style -}} | |
{%- endblock -%} | |
{%- block editor -%} | |
{{- use_editor -}} | |
{%- endblock -%} | |
{%- block numeric -%} | |
{{- use_numeric -}} | |
{%- endblock -%} | |
{%- block autocomplete -%} | |
{{- ac_config['route'] -}} | |
{%- endblock -%} | |
{%- block menu -%} | |
{{- knp_menu_render(menu, { currentClass: 'active', 'allow_safe_labels': true }) -}} | |
{%- endblock -%} | |
{%- block content -%} | |
{% spaceless %} | |
{%- if success is defined and success -%} | |
<div class="modal modal-success success-message"> | |
<div class="modal-dialog"> | |
<div class="modal-content"> | |
<div class="modal-header"> | |
<h4 class="modal-title">{{- 'message.info' | trans({}, translation_domain) -}}</h4> | |
</div> | |
<div class="modal-body"> | |
{{- success -}} | |
</div> | |
<div class="modal-footer"> | |
<button type="button" class="btn btn-primary add_new pull-left" data-dismiss="modal">{{- 'action.add' | trans({}, translation_domain) -}}</button> | |
<button type="button" class="btn btn-primary success-close pull-left" data-dismiss="modal">{{- 'action.close' | trans({}, translation_domain) -}}</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
{%- endif -%} | |
{%- if errors is defined and errors -%} | |
<div class="modal modal-warning error-message"> | |
<div class="modal-dialog"> | |
<div class="modal-content"> | |
<div class="modal-header"> | |
<h4 class="modal-title">{{- 'message.info' | trans({}, translation_domain) -}}</h4> | |
</div> | |
<div class="modal-body"> | |
{{- 'message.error' | trans({}, translation_domain) -}} | |
</div> | |
<div class="modal-footer"> | |
<button type="button" class="btn btn-danger pull-left" data-dismiss="modal">{{- 'action.close' | trans({}, translation_domain) -}}</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
{%- endif -%} | |
<div class="col-md-12 col-sm-12 col-xs-12"> | |
<div class="box box-success box-solid"> | |
<div class="box-header"> | |
<a href="#" class="btn btn-primary pull-right back-to-list">{{- 'action.back_to_list' | trans({}, translation_domain) -}}</a> | |
</div> | |
<div class="box-body"> | |
{% if inline_form %} | |
{% set attr = { role: 'form', class: 'form-inline' } %} | |
{% else %} | |
{% set attr = { role: 'form' } %} | |
{% endif %} | |
{{- form_start(form, {attr: attr}) -}} | |
<div class="box-body with-border"> | |
{%- for field in form.children -%} | |
{{- form_row(field) -}} | |
{%- endfor -%} | |
<button type="submit" class="btn btn-success pull-left">{{- 'action.submit' | trans({}, translation_domain) -}}</button> | |
</div> | |
{{- form_end(form) -}} | |
</div> | |
</div> | |
</div> | |
{% endspaceless %} | |
{%- endblock -%} | |
24.10.2016 16:46:42, Muhammad Surya: | |
{%- block javascript -%} | |
{%- if success is defined and success -%} | |
<script type="text/javascript"> | |
jQuery(document).ready(function () { | |
jQuery('.success-message').modal({ | |
backdrop: 'static' | |
}); | |
}); | |
</script> | |
{%- endif -%} | |
{%- if errors is defined and errors -%} | |
<script type="text/javascript"> | |
jQuery(document).ready(function () { | |
jQuery('.error-message').modal({ | |
backdrop: 'static' | |
}); | |
}); | |
</script> | |
{%- endif -%} | |
<script type="text/javascript"> | |
function createActionUrl(action) { | |
var url = document.URL.split('/'); | |
var queryString = document.URL.slice(document.URL.indexOf('?')); | |
if ('edit' === url[url.length - 2]) { | |
url.splice(-3,3); | |
} else { | |
url.splice(-2,2); | |
} | |
url.push(action); | |
window.location = url.join('/') + queryString; | |
} | |
jQuery(document).ready(function () { | |
jQuery('form').find('input[type=text],textarea,select').filter(':visible:first').focus(); | |
jQuery(document).on('click', '.back-to-list', function () { | |
createActionUrl('list'); | |
}); | |
jQuery(document).on('click', '.add_new', function () { | |
createActionUrl('new'); | |
}); | |
jQuery(document).on('click', '.success-close', function () { | |
jQuery('.back-to-list').trigger('click'); | |
}); | |
var target = jQuery('.datepicker'); | |
target.parent().css('position', 'relative'); | |
target.datetimepicker({ | |
format: '{{- date_picker['date_format'] -}}', | |
{% if date_picker['flatten'] %}sideBySide: true,{% endif %} | |
locale: '{{- locale -}}' | |
}); | |
{%- if use_file_style is same as(true) -%} | |
jQuery('input:file').fileinput({ | |
showUpload: false, | |
showCaption: false, | |
browseClass: 'btn btn-default', | |
fileType: ['jpg', 'png'], | |
allowedFileExtensions : ['jpg', 'png'] | |
}); | |
{%- endif -%} | |
{%- if use_editor is same as(true) -%} | |
jQuery('.editor').summernote(); | |
{%- endif -%} | |
{% if use_numeric is same as(true) %} | |
jQuery('.numeric').numeric(); | |
jQuery('.positive').numeric({ negative: false }); | |
{% endif %} | |
{%- if ac_config['route'] is same as('') -%} | |
jQuery('.autocomplete').select2({ | |
minimumInputLength: 3, | |
ajax: { | |
url: Routing.generate('{{- ac_config['route'] -}}'), | |
dataType: 'json', | |
quietMillis: 250, | |
data: function (term, page) { | |
return { | |
q: term | |
}; | |
}, | |
results: function (data, page) { | |
return { results: data }; | |
}, | |
cache: true | |
}, | |
initSelection : function (element, callback) { | |
jQuery.ajax(Routing.generate('{{- ac_config['route_callback'] -}}', {id: jQuery(element).val()}), { | |
dataType: 'json' | |
}).done(function(data) { | |
callback(data); | |
}); | |
} | |
}); | |
jQuery(document).on('select2:select', '.autocomplete', function (e) { | |
jQuery('{{- ac_config['selector_storage']-}}').val(e.params.data.id); | |
}); | |
{%- endif -%} | |
}); | |
</script> | |
{% for file in js_include['files'] %} | |
{%- include file with { route: js_include['routes'] } -%} | |
{% endfor %} | |
{%- endblock -%} | |
24.10.2016 16:47:06, Muhammad Surya: i have more complex then your, but i have not problem with performance in production | |
24.10.2016 16:50:15, Muhamad: *ngecek | |
24.10.2016 16:50:45, Muhammad Surya: Bagian twig | |
24.10.2016 16:50:46, Muhamad: waah.. keren-keren | |
24.10.2016 16:50:46, Muhamad: oke deh om sur | |
24.10.2016 16:50:57, Muhamad: ane coba cek ulang, sekalian review code2nya | |
24.10.2016 16:51:41, Muhamad: terima kasih om.. | |
24.10.2016 16:51:47, Muhammad Surya: sama2 | |
28.10.2016 19:11:37, Muhammad: Brow mulai hari ini ? | |
28.10.2016 19:11:52, Muhammad Surya: wkwkwk aduh lupa om | |
28.10.2016 19:11:58, Muhammad Surya: lagi lembur pula π | |
28.10.2016 19:12:04, Muhammad Surya: libur dulu boleh ga ya | |
28.10.2016 19:12:11, Abdul Jabar: assyyiikkk akhirnya bisa ikutan | |
28.10.2016 19:12:16, Muhammad Surya: Kalau mau ntar agak malaman | |
28.10.2016 19:12:18, Muhammad Surya: π | |
28.10.2016 19:12:22, Iqbal: Gpp om mangga , kalo lagi sibuk libur aja dl.. | |
28.10.2016 19:12:31, Abdul Jabar: baru sampe rumah dengan keadaan setengah ganteng | |
28.10.2016 19:12:33, Muhammad Surya: Kemarin sampai apa sih? | |
28.10.2016 19:12:45, Iqbal: Controller om bikin crud | |
28.10.2016 19:13:24, Abdul Jabar: oke om maleman | |
28.10.2016 19:13:27, Muhammad Surya: ooo mbahas form ya kalau ga salah | |
28.10.2016 19:13:38, Iqbal: Iy om.. | |
28.10.2016 19:13:53, Muhammad Surya: Ok, maaf ya... | |
28.10.2016 19:14:15, Iqbal: Gpp om santai.. π | |
28.10.2016 19:14:33, Muhammad Surya: Thanks ya guys | |
28.10.2016 19:15:53, rudjok: pas, bgt. d sni juga udah 2 hari lagi rempong, om. | |
28.10.2016 19:16:03, Muhammad Surya: hehehe | |
28.10.2016 19:16:49, rudjok: nanti jadi pukul brapa, om? | |
28.10.2016 19:18:50, Ahmad: Masih di jalan | |
28.10.2016 19:22:07, Muhammad Surya: Jam 9an ya π sebentar lagi balik kok | |
28.10.2016 19:37:14, Muhammad Surya: Guys, gue balik dulu... Kalau memang sepakat mau jam 9an, insyAllah gue siap | |
28.10.2016 19:37:33, Muhammad Surya: Semoga jam segitu gue udah sampai rumah dan udah makan π | |
28.10.2016 19:38:09, Muhammad: Ditunggu brow | |
28.10.2016 19:43:50, rudjok: gak mesti jam 9, sesampainya di rumah + rehat jg gpp om. | |
28.10.2016 20:19:01, Nur Rahmat Taufik(you): Saya juga lupa kalau malam ini ada sesi free course. Untung belum mulai π | |
28.10.2016 21:02:45, Muhammad Surya: Guys nanti ya jam 21.30an | |
28.10.2016 21:02:56, Muhammad Surya: Hehehe istirahat n makan dulu | |
28.10.2016 21:04:54, Iqbal: Ok om.. | |
28.10.2016 21:32:11, Muhammad Surya: Assalamu'alaikum guys | |
28.10.2016 21:32:13, Muhammad Surya: gimana? | |
28.10.2016 21:32:17, Muhammad Surya: absen donk | |
28.10.2016 21:32:23, rudjok: waalaikumsalam | |
28.10.2016 21:32:29, rudjok: hadir | |
28.10.2016 21:32:49, Muhammad Surya: Wah nunggu yang lain dulu ya π | |
28.10.2016 21:32:57, Muhammad Surya: belum naik kayaknya | |
28.10.2016 21:33:04, rudjok: π | |
28.10.2016 21:35:13, Iqbal: walaikumsalam.. | |
28.10.2016 21:35:20, Muhammad: yups | |
28.10.2016 21:35:20, Iqbal: hadir... | |
28.10.2016 21:35:54, Muhamad: hadiirrr... walupun baru kelar uts, ttp ga mau ketinggalan π π | |
28.10.2016 21:37:52, Muhammad Surya: Alhamdulillah | |
28.10.2016 21:37:57, Muhammad Surya: ayo kita mulai π | |
28.10.2016 21:39:14, Muhammad Surya: Kemarin kita baru membahas function/method newAction ya | |
28.10.2016 21:39:18, Muhamad: om alfan ijin 10mnitan dlu ya buat beres2 dan persiapan | |
28.10.2016 21:39:31, Muhammad Surya: kira-kira untuk yang kemarin ada pertanyaan ga ya? | |
28.10.2016 21:39:39, Muhammad Surya: Noted | |
28.10.2016 21:40:19, Muhammad Surya: Apakah sudah paham semua tentang function/method newAction? | |
28.10.2016 21:41:10, Muhammad Surya: Kalau tidak ada pertanyaan, mari kita turun ke method showAction | |
28.10.2016 21:41:34, Muhammad: ada alternatif lain jika kita g mo pake symfony form ? | |
28.10.2016 21:42:06, Muhammad Surya: Bisa om, nantinya handling menggunakan $request->get('name'); | |
28.10.2016 21:42:21, Muhammad Surya: satu2 name fieldnya diambil dari situ | |
28.10.2016 21:42:37, Abdul Jabar: | |
28.10.2016 21:43:01, Muhammad Surya: wkwkwk semoga tambah ganteng gan | |
28.10.2016 21:43:12, Muhammad: beberapa waktu lalu gw liat salah satu doctrine maintainer di youtube, dan dia memang g nyaranin untuk pake form | |
28.10.2016 21:43:22, Muhammad: TIGHT COUPLING they say | |
28.10.2016 21:44:07, Muhammad Surya: Ga masalah, tapi saya dulu pertama kali belajar symfony memang tanpa form π justru bersyukur banget sekarang bisa paham form | |
28.10.2016 21:44:18, Muhammad Surya: π dulu untuk CRUD harus redudant | |
28.10.2016 21:44:21, Muhammad Surya: sekarang clear | |
28.10.2016 21:44:33, Muhammad: π | |
28.10.2016 21:44:52, Muhammad Surya: Bagaimana bisa kita lanjut ke method showAction | |
28.10.2016 21:45:07, Muhammad Surya: /** | |
* Finds and displays a Group entity. | |
* | |
* @Route("/{id}", name="group_show") | |
* @Method("GET") | |
*/ | |
public function showAction(Group $group) | |
{ | |
$deleteForm = $this->createDeleteForm($group); | |
return $this->render('group/show.html.twig', array( | |
'group' => $group, | |
'delete_form' => $deleteForm->createView(), | |
)); | |
} | |
28.10.2016 21:45:15, Muhammad Surya: Kaya gitu ya, kira-kira methodnya | |
28.10.2016 21:45:31, Muhammad Surya: Ada yang merasa janggal sebelum saya bahas? | |
28.10.2016 21:46:33, Muhammad Surya: Dari baris code diatas apakah ada yang merasa janggal terutama dari awal kita belajar config, routing hingga sekarang CRUD? | |
28.10.2016 21:47:11, Muhammad Surya: Ok kalau ga ada yang janggal dan bingung, mari kita bahas | |
28.10.2016 21:47:25, Iqbal: banyak magic nya om π | |
28.10.2016 21:47:43, Muhammad Surya: π ga magic kalau kita tau alurnya π | |
28.10.2016 21:47:51, Muhammad Surya: magic karena kita cuma tau kulitnya wkwkwk | |
28.10.2016 21:48:09, Iqbal: iya sih bener, itu kebanyakan function bawaan symfony yak ? | |
28.10.2016 21:48:17, Iqbal: termasuk yang createDeleteForm() | |
28.10.2016 21:48:31, Muhammad Surya: @Route("/{id}", name="group_show") | |
<= disitu route-nya pakai {id} | |
28.10.2016 21:48:57, Muhammad Surya: public function showAction(Group $group) | |
<= kenapa disini jadi $group? | |
28.10.2016 21:49:02, Muhammad Surya: ada yang bisa jelaskan? π | |
28.10.2016 21:49:38, Muhammad Surya: harusnya kalau kalian ingat aturan routing, | |
{id} | |
harus ditangkap menjadi | |
$id | |
donk π ya kan? | |
28.10.2016 21:49:46, Muhammad Surya: Kenapa sekarang jadi $group? | |
28.10.2016 21:49:52, Muhammad Surya: ada yang bisa bantu? | |
28.10.2016 21:50:19, Iqbal: iya yah harus nya kan $id | |
28.10.2016 21:51:56, Iqbal: apa karna di lempar dulu ke class Group kan ada getter setter nya tuh | |
28.10.2016 21:51:57, Muhammad Surya: Bingung? | |
28.10.2016 21:52:06, Muhammad Surya: Mari kita bahas? | |
28.10.2016 21:52:08, Muhammad Surya: π | |
28.10.2016 21:52:24, Muhammad Surya: Pertama mari kita buat error dulu biar lebih clear gimana cara kerjanya π | |
28.10.2016 21:52:51, Muhammad Surya: sensio_framework_extra: | |
request: | |
auto_convert: false | |
28.10.2016 21:53:10, Muhammad Surya: tambahkan itu di config.yml | |
28.10.2016 21:53:30, Muhammad Surya: lalu coba jalankan aplikasinya trus show π | |
28.10.2016 21:53:59, Muhammad Surya: monggo dicoba, apakah hasilnya error? | |
28.10.2016 21:54:06, Iqbal: | |
28.10.2016 21:54:08, Iqbal: error om | |
28.10.2016 21:54:24, Muhammad Surya: Lho ngapain di errorin bal wkwkwk | |
28.10.2016 21:54:27, Muhammad Surya: benerin lah :-P | |
28.10.2016 21:54:45, Muhammad Surya: sudah mulai terlihat ya π yang tadinya ga error jadi error π | |
28.10.2016 21:55:03, Iqbal: kan tdi dtamabahin itu om , karna auto_convert nya jadi false kan ? | |
28.10.2016 21:55:11, Iqbal: mulai cerah om π | |
28.10.2016 21:55:19, Muhammad Surya: π yup | |
28.10.2016 21:55:55, Muhammad Surya: public function showAction($id) | |
28.10.2016 21:55:59, Muhammad Surya: ganti jadi seperti itu | |
28.10.2016 21:56:26, Muhammad Surya: var_dump($id); | |
exit(); | |
28.10.2016 21:56:46, Muhammad Surya: kemudian kita coba capture $id-nya dapat atau tidak? | |
28.10.2016 21:56:59, Muhammad Surya: monggo hasilnya | |
28.10.2016 21:57:03, Iqbal: dapet om | |
28.10.2016 21:57:08, Iqbal: string(1) "1" | |
28.10.2016 21:57:15, Muhammad Surya: ok sudah sedikit cerah? | |
28.10.2016 21:57:17, Muhammad Surya: π | |
28.10.2016 21:58:00, Muhammad Surya: mari kita lebih dalam lagi π | |
28.10.2016 21:58:47, Iqbal: lanjut om... | |
28.10.2016 21:58:58, Muhammad Surya: $entityManager = $this->get('doctrine.orm.entity_manager'); | |
$group = $entityManager->getRepository('AppBundle:Group')->find($id); | |
28.10.2016 21:59:11, Muhammad Surya: ganti yang tadi jadi begitu π | |
28.10.2016 21:59:37, Muhammad Surya: hingga hasilnya function-nya bener kembali π | |
28.10.2016 21:59:51, Iqbal: bisa om .. | |
28.10.2016 21:59:51, Muhammad Surya: $entityManager = $this->get('doctrine.orm.entity_manager'); | |
$group = $entityManager->getRepository('AppBundle:Group')->find($id); | |
$deleteForm = $this->createDeleteForm($group); | |
return $this->render('group/show.html.twig', array( | |
'group' => $group, | |
'delete_form' => $deleteForm->createView(), | |
)); | |
28.10.2016 21:59:58, Muhammad Surya: gitu lengkapnya π | |
28.10.2016 22:00:08, Muhammad Surya: Ok bisa ya | |
28.10.2016 22:00:25, Muhammad Surya: Perlu ane jelasin ga kenapa kok beda | |
28.10.2016 22:00:43, Iqbal: perlu om biar lebih terbuka π | |
28.10.2016 22:00:44, Muhammad Surya: Dan kenapa yang pertama kok cukup pakai type hinting | |
28.10.2016 22:01:30, Muhammad Surya: Kalau ga tau apa itu type hinting, bisa baca di buku ini π https://leanpub.com/belajar-santai-oop-php | |
28.10.2016 22:01:38, Muhammad Surya: Ok saya jelaskan ya π | |
28.10.2016 22:02:26, Muhammad Surya: By default, Symfony (melalui Bundle Sensio Framework Extra) melakukan auto convert berdasarkan type hinting | |
28.10.2016 22:02:28, Iqbal: btw dari kemarin udh niat mau beli buku ini,, | |
28.10.2016 22:02:44, Muhammad Surya: Beli lah wkwkwk | |
28.10.2016 22:02:55, Muhammad Surya: Ok back to topic | |
28.10.2016 22:03:43, Muhammad Surya: Auto Converter ini disebut Param Converter... Dia menggunakan fungsi yeild untuk mengenerate value parameter | |
28.10.2016 22:04:26, Muhammad Surya: Param Converter ini hanya berlaku untuk type hinting yang bertipe entity (Doctrine Entity) | |
28.10.2016 22:04:44, Muhammad Surya: cara kerjanya sama seperti yang sudah kita lakukan secara manual tadi π | |
28.10.2016 22:04:57, Muhammad Surya: $entityManager = $this->get('doctrine.orm.entity_manager'); | |
$group = $entityManager->getRepository('AppBundle:Group')->find($id); | |
28.10.2016 22:05:06, Muhammad Surya: Kira-kira cara kerjanya seperti itu π | |
28.10.2016 22:05:30, Muhammad Surya: Bagaimana apakah bisa dipahami? | |
28.10.2016 22:06:28, Iqbal: iya paham om.. | |
28.10.2016 22:06:33, Nur Rahmat Taufik(you): Type hinting Groupnya dapat id ngambil dari getId() di Entity/Group.php ya? | |
28.10.2016 22:07:18, Muhammad Surya: Bukan om, tapi Type Hinting untuk dapetin Entity Class yang nantinya dipakai untuk dapetin Repository-nya | |
28.10.2016 22:07:27, rudjok: si Group ini tau harus ambil id itu dari annotationnya kah, om? | |
28.10.2016 22:07:41, Muhammad Surya: Dari repository itu nanti tinggal pakai function find($id) dari parameter id yang dikirim dari client | |
28.10.2016 22:08:12, Muhammad Surya: Ingat, konsep Entity -> Repository yang sudah dibahas dipertemuan sebelumnya | |
28.10.2016 22:08:29, Muhammad: keypoint ! | |
28.10.2016 22:08:29, Muhammad: sensio_framework_extra: | |
request: | |
auto_convert: false | |
28.10.2016 22:08:41, Muhammad Surya: Dari client Jok, jadi id ini dari paramter {id} yang ada di route annotation | |
28.10.2016 22:09:52, Muhammad Surya: @Route("/{id}", name="group_show") | |
`{id} ini kan ntar diganti jadi `id yang ada diparameter, misal /group/2 | |
28.10.2016 22:10:37, Muhammad Surya: nantinya si converter akan $entityManager->getRepository(TypeHinting::class)->find(id); | |
28.10.2016 22:10:49, Muhammad Surya: kira2 seperti itu cara kerjanya | |
28.10.2016 22:10:51, Muhammad Surya: gimana | |
28.10.2016 22:11:02, rudjok: cerna dlu om bentar | |
28.10.2016 22:11:05, Nur Rahmat Taufik(you): I see | |
28.10.2016 22:11:38, Muhammad: itu ga salah bro [ auto_convert: false ] | |
28.10.2016 22:11:40, Muhammad Surya: Ok dicerna dulu ga usah buru2 karena ane udah dirumah jadi aman dari diusir π | |
28.10.2016 22:11:58, Muhammad Surya: maksudnya gimana om? | |
28.10.2016 22:12:03, Nur Rahmat Taufik(you): TypeHinting::class menunjuk ke Entity\Group.php kalau confignya pakai auto_convert: true | |
28.10.2016 22:12:05, Nur Rahmat Taufik(you): ? | |
28.10.2016 22:12:29, Muhammad Surya: Yup sesuai dengan type hinting di method | |
28.10.2016 22:13:02, Muhamad: ijin gabung lagi ya om sur | |
28.10.2016 22:13:05, Muhammad: bukannya harus di converter: true, atw auto_converter: true | |
28.10.2016 22:13:09, Muhammad Surya: siap monggo | |
28.10.2016 22:13:12, Muhammad: automatic khan ? | |
28.10.2016 22:13:22, Muhammad: nangkep id by annotation | |
28.10.2016 22:13:25, Muhammad Surya: Iya di false karena tadi kita bikin error π | |
28.10.2016 22:13:42, Muhammad Surya: Fungsi agar kita tau gimana cara kerjanya auto converter | |
28.10.2016 22:14:07, rudjok: then, kalo di annotation {id} di ganti {name} atau {code} bisa juga yak. | |
28.10.2016 22:14:17, Muhammad Surya: /** | |
* Finds and displays a Group entity. | |
* | |
* @Route("/{id}", name="group_show") | |
* @Method("GET") | |
*/ | |
public function showAction($id) | |
{ | |
$entityManager = $this->get('doctrine.orm.entity_manager'); | |
$group = $entityManager->getRepository('AppBundle:Group')->find($id); | |
$deleteForm = $this->createDeleteForm($group); | |
return $this->render('group/show.html.twig', array( | |
'group' => $group, | |
'delete_form' => $deleteForm->createView(), | |
)); | |
} | |
28.10.2016 22:14:33, Muhammad Surya: Jadinya seperti itu setelah dimatikan tadi om Muhammad | |
28.10.2016 22:14:44, Muhammad: ok's | |
28.10.2016 22:15:06, Muhammad: the magic way, turn on your auto_converter, ya ya ya :D | |
28.10.2016 22:15:20, Muhammad Surya: Yup betul | |
28.10.2016 22:15:34, Nur Rahmat Taufik(you): kalau auto_convertnya false, tapi pakai TypeHinting gimana? | |
28.10.2016 22:15:40, Muhammad Surya: Error | |
28.10.2016 22:15:43, Muhammad Surya: monggo dicoba | |
28.10.2016 22:15:58, Muhammad Surya: | |
28.10.2016 22:16:02, Muhammad Surya: seperti itu errornya | |
28.10.2016 22:16:26, Nur Rahmat Taufik(you): oh iya | |
28.10.2016 22:16:29, Muhammad: banyak triknya ternyata π | |
28.10.2016 22:16:59, Muhammad Surya: So disini saya mencoba lebih dalam tentang how symfony works | |
28.10.2016 22:17:31, Muhammad Surya: Ga sekedar gimana caranya bikin CRUD otomatis | |
28.10.2016 22:17:46, Muhammad Surya: Dan ga sekedar magic | |
28.10.2016 22:18:26, Muhammad Surya: Tapi bener2 paham cara Symfony memperlakukan sesuatu | |
28.10.2016 22:19:37, Muhammad Surya: So dengan begitu, jika kalian butuh extra performance, kalian bisa mematikan beberapa fitur yang tidak perlu, seperti auto convert | |
28.10.2016 22:20:57, Muhammad: apa memang pendekatan auto_convert itu circular, jadi dia nyari di annotation | |
28.10.2016 22:21:16, Muhammad: ketimbang pendekatan langsung | |
28.10.2016 22:21:26, Muhammad Surya: Maksudnya circular gimana om? | |
28.10.2016 22:22:15, Muhammad Surya: Ok bagaimana apakah ada yang ditanyakan tentang auto convert? | |
28.10.2016 22:23:55, rudjok: penggunaan auto convert ini ya u/ performance vs kemudahan? | |
28.10.2016 22:24:04, Muhammad Surya: kemudahan | |
28.10.2016 22:24:11, Muhammad: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html | |
28.10.2016 22:24:13, Muhammad Surya: kecepatan development | |
28.10.2016 22:24:22, Muhammad: The converter tries to get a SensioBlogBundle:Post object from the request attributes (request attributes comes from route placeholders -- here id); | |
If no Post object is found, a 404 Response is generated; | |
28.10.2016 22:24:28, rudjok: aliasnya lah | |
28.10.2016 22:24:37, Muhammad Surya: Yup om Heri | |
28.10.2016 22:24:40, Muhammad Surya: betul pakai itu | |
28.10.2016 22:25:18, Muhammad Surya: Iya untuk mempercepat | |
28.10.2016 22:25:51, Muhammad Surya: Bagaimana apakah bisa dilanjutkan ataukah masih ada yang ditanyakan tentang showAction? | |
28.10.2016 22:26:04, Muhamad: lanjut om... | |
28.10.2016 22:26:52, Muhamad: oh ya om sur.. mau tanya dlu | |
28.10.2016 22:27:02, Muhammad Surya: Monggo | |
28.10.2016 22:27:07, Muhamad: "doctrine.orm.entity_manager" <β ini sebenernya dapat dari mana ya om | |
28.10.2016 22:27:26, Muhammad Surya: itu namanya service | |
28.10.2016 22:27:30, Muhammad Surya: nanti akan dibahas tersendiri | |
28.10.2016 22:27:43, Muhamad: oh nama2 service2nya, oke deh.. | |
28.10.2016 22:27:53, Muhamad: siap om, yukk lanjutt | |
28.10.2016 22:28:40, Muhammad Surya: $deleteForm = $this->createDeleteForm($group); | |
28.10.2016 22:29:00, Muhammad Surya: private function createDeleteForm(Group $group) | |
{ | |
return $this->createFormBuilder() | |
->setAction($this->generateUrl('group_delete', array('id' => $group->getId()))) | |
->setMethod('DELETE') | |
->getForm() | |
; | |
} | |
28.10.2016 22:29:07, Muhammad Surya: itu monggo | |
28.10.2016 22:29:14, Muhammad Surya: ada yang ditanyakan dari baris code tersebut? | |
28.10.2016 22:29:58, Muhammad Surya: Yang bawah fungsinya cuma membuat delete form | |
28.10.2016 22:30:35, Muhammad Surya: sebuah tombol dengan action delete | |
28.10.2016 22:31:03, Muhammad Surya: monggo ada yang ditanyakan ataukah sudah jelas | |
28.10.2016 22:31:43, Muhammad: clear | |
28.10.2016 22:32:02, Muhamad: tadi coba klik botton delete keluar error ini om | |
28.10.2016 22:32:06, Muhamad: | |
28.10.2016 22:32:35, Iqbal: ini karna auto_convert nya di false kan ? | |
28.10.2016 22:32:39, Muhammad Surya: Yup | |
28.10.2016 22:32:42, Muhammad Surya: betul bal | |
28.10.2016 22:32:59, Muhammad Surya: Kan tadi sudah dimatikan π monggo diaktifkan lagi biar ga error π | |
28.10.2016 22:33:07, Muhammad Surya: code yang show biarin aja π | |
28.10.2016 22:33:07, Muhamad: oh iya ya | |
28.10.2016 22:33:14, Muhamad: hehe | |
28.10.2016 22:33:17, Muhamad: okok | |
28.10.2016 22:34:12, Muhammad Surya: sampai delete masih ada yang ditanyakan? | |
28.10.2016 22:34:39, Muhammad Surya: $em = $this->getDoctrine()->getManager(); | |
$em->remove($group); | |
$em->flush(); | |
Yang ada didelete | |
28.10.2016 22:34:52, Muhammad Surya: Penjelasannya sama seperti yang ada di new dan edit π | |
28.10.2016 22:34:54, Muhammad Surya: sama aja kan? | |
28.10.2016 22:35:04, Nur Rahmat Taufik(you): flush buat apa pak? | |
28.10.2016 22:35:23, Muhammad Surya: untuk commit ke database π | |
28.10.2016 22:35:35, Iqbal: ok om.. | |
28.10.2016 22:35:50, Muhammad Surya: jadi remove itu hanya persisting data aja tapi operasi databasenya belum dilakukan secara sempurna | |
28.10.2016 22:35:56, Muhammad Surya: perlu di flush | |
28.10.2016 22:36:18, Muhammad Surya: semua operasi write doctrine harus di flush | |
28.10.2016 22:37:06, Muhammad Surya: sampai disini kita sudah selesai membahas CRUD di Symfony π | |
28.10.2016 22:37:15, Muhamad: mau tanya dlu om | |
28.10.2016 22:37:21, Muhammad Surya: bagaimana dari awal sampai akhir membuat CRUD apakah ada pertanyaan? | |
28.10.2016 22:37:32, Muhammad Surya: saya kasih waktu 10 menit ya π | |
28.10.2016 22:37:34, Muhammad Surya: monggo2 | |
28.10.2016 22:37:48, Muhamad: boleh tau alasan kenpa di button delete itu ada tag form juga ? | |
28.10.2016 22:38:14, Muhamad: terus pake tag input bukan a href aja | |
28.10.2016 22:38:18, Muhamad: ?? | |
28.10.2016 22:38:34, Iqbal: kalo ga salah karna method nya kan delete | |
28.10.2016 22:38:47, Iqbal: kalo pakae href hanya bisa get doang | |
28.10.2016 22:39:04, Muhammad: oh iya, itu karena sifatnya automatic, auto_convert bisa dihandle dengan dengan @paramconverter khan ya bro @AdenKejawen | |
28.10.2016 22:39:07, Muhammad Surya: Yup karena browser secara default hanya mendukung 2 method yaitu GET dan POST | |
28.10.2016 22:39:21, Iqbal: disitu pasti ada hidden input | |
28.10.2016 22:39:45, Muhammad Surya: Betul, si button itu nyimpan id dari entity yang bersangkutan π | |
28.10.2016 22:40:39, Muhammad Surya: Dan alasannya kenapa harus form? Ini karena Generator, so create a simple flow then user can modify to fit with their requirements | |
28.10.2016 22:41:31, Muhammad Surya: intinya, karena ini menggunakan Generator, si pembuat generator ga mau pusing dengan hal-hal yang bersifat "Estetika dan UX" sehingga mereka membuat sesimple mungkin tapi works | |
28.10.2016 22:41:54, Muhammad Surya: Ini bisa dilihat dari mereka yang ga ngasih view yang "layak" untuk sebuah aplikasi π | |
28.10.2016 22:42:11, Muhamad: | |
28.10.2016 22:42:23, Muhamad: maksudnya id itu ini kan ya om | |
28.10.2016 22:42:34, Muhammad Surya: Untuk kebutuhan yang khusus, menggunakan @ParamConverter lebih disarankan | |
28.10.2016 22:42:34, Muhamad: id nya di ubah jadi token | |
28.10.2016 22:43:08, Muhammad Surya: <form action itu sebenarnya yang penting | |
28.10.2016 22:43:15, Muhammad Surya: kalau _token itu adalah CRSF token | |
28.10.2016 22:43:53, Muhammad Surya: pada form action itu mengarah pada /group/{id} dengan method DELETE | |
28.10.2016 22:44:14, Muhammad Surya: /** | |
* Deletes a Group entity. | |
* | |
* @Route("/{id}", name="group_delete") | |
* @Method("DELETE") | |
*/ | |
public function deleteAction(Request $request, Group $group) | |
{ | |
$form = $this->createDeleteForm($group); | |
$form->handleRequest($request); | |
if ($form->isSubmitted() && $form->isValid()) { | |
$em = $this->getDoctrine()->getManager(); | |
$em->remove($group); | |
$em->flush(); | |
} | |
return $this->redirectToRoute('group_index'); | |
} | |
28.10.2016 22:44:43, Muhammad Surya: bisa dilihat, disana untuk delete @Method menggunakan DELETE sehingga secara default tidak bisa dilakukan oleh form biasa π | |
28.10.2016 22:45:02, Muhammad Surya: sehingga perlu dibuat form khusus dengan _method=DELETE | |
28.10.2016 22:45:39, Muhammad Surya: _method ini nantinya akan diconvert oleh Symfony menjadi Method DELETE pada standard HTTP Verb | |
28.10.2016 22:45:43, Nur Rahmat Taufik(you): oh iya, kalau methodnya DELETE di arahin ke deleteAction | |
28.10.2016 22:45:58, Nur Rahmat Taufik(you): kalau GET ke showAction | |
28.10.2016 22:46:39, Muhammad Surya: Secara default browser cuma support 2 method yaitu GET dan POST, sedangkan kita perlu method DELETE untuk action delete... Kalau kita mau, kita bisa merubahnya di deleteAction jadi GET | |
28.10.2016 22:46:50, Muhammad Surya: atau yang lainnya (bedakan dengan showAction) | |
28.10.2016 22:47:16, Muhamad: hmmpp... yup paham om.. | |
28.10.2016 22:47:53, Muhammad Surya: Ok gimana masih ada pertanyaan lagi sebelum kita masuk kebahasan selanjutnya? | |
28.10.2016 22:48:16, Muhammad Surya: saya harap kita tidak perlu malu untuk bertanya apapun, karena disini kita sama2 belajar π | |
28.10.2016 22:49:03, Nur Rahmat Taufik(you): Kalau mau pakai GET, di method createDeleteForm juga disetMethod GET juga ya | |
28.10.2016 22:49:04, Muhammad Surya: saya sendiri untuk form yang bawaan generator sudah hampir 100% tidak dipakai karena saya menggunakan https://github.com/SymfonyId/SymfonyIdAdminBundle | |
28.10.2016 22:49:36, Muhammad Surya: Dengan Bundle yang saya bangun itu, saya bisa membuat CRUD yang lebih sederhana dan bersih π | |
28.10.2016 22:50:07, Muhammad Surya: Iya gan... atau tinggal href aja π | |
28.10.2016 22:50:51, Muhammad Surya: Bagaimana apakah masih ada yang bingung? | |
28.10.2016 22:50:59, Muhammad Surya: tidak perlu malu π kita sama2 belajar π | |
28.10.2016 22:51:44, Muhammad Surya: insya Allah kalau ada waktu, kita bahas Generator saya π Iqbal n Tegar n @hak11 sudah merasakan nikmatnya coding menggunakan itu π | |
28.10.2016 22:52:00, Muhamad: *kayanya ane mesti sering2 ngulik symfony biar terbiasa nh | |
28.10.2016 22:52:13, Muhammad: CRUD ok klo cyclenya pendek, klo project panjang, apa g bahaya masbro @AdenKejawen | |
28.10.2016 22:52:37, Muhammad: TIGHT COUPLING ? | |
28.10.2016 22:52:57, Muhammad: DDD ? maybe ? | |
28.10.2016 22:53:21, Muhammad Surya: Wajib | |
28.10.2016 22:53:32, Muhammad Surya: Maksudnya bagaimana ini om? | |
28.10.2016 22:54:44, Muhamad: iya nh om, maaf nh, mau nyempetin2 banyak belajar symfony susah bgt, kebentur tugas2 kuliah π’π’ | |
28.10.2016 22:54:55, Muhamad: *curhat | |
28.10.2016 22:55:20, Muhammad Surya: Santai gan... Yang penting terus coba kalau ada waktu luang π | |
28.10.2016 22:55:29, Muhammad Surya: mulai bersahabat dengan dokumentasi π | |
28.10.2016 22:55:53, Muhamad: iya om, andalan bgt ini mah | |
28.10.2016 22:55:57, Muhammad: dulu temen dev di BUMN bikin applikasi accounting internal pake CI CRUD style, controller gemuk, taon demi taon ada requirement baru, setiap requirement itu kadang cross data dengan system yang laen, dia kadang gw merasa mumet 'dia bilang' | |
28.10.2016 22:56:35, Muhammad Surya: CRUD hanya untuk CRUD om... Jika sudah ada requirement lagi bisa dibuat controller baru π | |
28.10.2016 22:57:09, Muhammad Surya: Pada akhirnya pengalaman dan pengetahuan tengan Design Pattern yang akan mengajarkan bagaimana membangun sistem secara lebih baik π | |
28.10.2016 22:57:21, Muhammad: π | |
28.10.2016 22:57:58, Muhammad: tapi tetua2 symfony g nyaranin pake CRUD lho masbrow, gmana donk ? π | |
28.10.2016 22:58:40, Muhammad Surya: Itu contoh project Structure dari Project yang saya bangun π | |
28.10.2016 22:58:49, Muhammad Surya: | |
28.10.2016 22:59:10, Muhammad: π | |
28.10.2016 22:59:23, Muhammad: all symfonyid ? | |
28.10.2016 22:59:40, Muhammad Surya: Ya itu kembali ke pilihan masing-masing om π saya pribadi tetap menggunakan CRUD Generator buatan saya sendiri untuk tugas2 redudant | |
28.10.2016 22:59:49, Muhammad Surya: Karena setiap aplikasi pasti butuh CRUD | |
28.10.2016 23:00:16, Muhammad Surya: <?php | |
/** | |
* Generated by SymfonyIdAdminBundle | |
* Url: https://github.com/symfonyid/SymfonyIdAdminBundle. | |
*/ | |
namespace Ihsan\AppBundle\Admin; | |
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | |
use SymfonyId\AdminBundle\Annotation as Siab; | |
use SymfonyId\AdminBundle\Controller\CrudController; | |
/** | |
* @Route("/country") | |
* | |
* @Siab\Page("Country", description="Description of Country") | |
* @Siab\Crud("Ihsan\AppBundle\Document\Country", form="Ihsan\AppBundle\Form\Type\CountryType") | |
* @Siab\Grid(@Siab\Column({"code", "name"}), filter=@Siab\Filter({"code", "name"})) | |
* @Siab\Security( | |
* create="ROLE_STAFF", | |
* edit="ROLE_STAFF", | |
* delete="ROLE_STAFF", | |
* read="ROLE_STAFF", | |
* download="ROLE_STAFF" | |
* ) | |
*/ | |
class CountryController extends CrudController | |
{ | |
public function getClassName() | |
{ | |
return __CLASS__; | |
} | |
} | |
28.10.2016 23:00:31, Muhammad Surya: CRUD punya saya cuma seperti itu π | |
28.10.2016 23:00:55, Muhammad: π | |
28.10.2016 23:01:02, Muhammad Surya: dengan hanya 1 baris code, harusnya jika ada requirement tambahan tidak akan terlalu kotor | |
28.10.2016 23:01:03, Muhamad: keren keren keren.... | |
28.10.2016 23:01:36, Muhammad Surya: Bagaimana apakah masih ada pertanyaan? | |
28.10.2016 23:01:48, Muhamad: yukk om lanjuttt.. mash semangat nh | |
28.10.2016 23:02:12, Muhamad: hehehe | |
28.10.2016 23:02:13, Muhammad Surya: Ok masih semangat ya π | |
28.10.2016 23:02:20, Muhammad: sempet bikin dummy apps kmaren si bro pake siab :D | |
28.10.2016 23:02:54, Muhammad Surya: Hehehe mantab om | |
28.10.2016 23:03:01, Muhammad Surya: Ok lanjut ya | |
28.10.2016 23:03:22, Muhammad Surya: Kemarin saya janji akan membahas tentang relasi di Doctrine | |
28.10.2016 23:03:41, Muhamad: wah.. kayanya ane paling jauh ketinggalan nh dari member2 disini π’π’ | |
28.10.2016 23:03:57, Iqbal: lanjut om .. | |
28.10.2016 23:03:57, Muhammad Surya: Kita sama2 belajar gan | |
28.10.2016 23:04:01, Muhammad Surya: belum ada yang ketinggalan π | |
28.10.2016 23:04:25, Muhamad: siaapp, ttp semangat... yuk lanjut om "relasi di Doctrine" | |
28.10.2016 23:04:26, Muhammad Surya: Kemarin kita sepakat akan membuat aplikasi Kontak dengan dua table yaitu Group dan Contact | |
28.10.2016 23:04:42, Muhammad Surya: mari kita mulai membuat entity Contactnya π | |
28.10.2016 23:04:46, Muhammad Surya: <?php | |
namespace AppBundle\Entity; | |
use Doctrine\ORM\Mapping as ORM; | |
/** | |
* @ORM\Entity() | |
* @ORM\Table(name="contacts") | |
*/ | |
class Contact | |
{ | |
/** | |
* @ORM\Column(name="id", type="integer", nullable=false) | |
* @ORM\Id | |
* @ORM\GeneratedValue(strategy="AUTO") | |
* | |
* @var int | |
*/ | |
private $id; | |
/** | |
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Group", cascade={"persist"}) | |
* @ORM\JoinColumn(name="group_id", referencedColumnName="id") | |
* | |
* @var Group | |
*/ | |
private $group; | |
/** | |
* @ORM\Column(name="name", type="string", length=77) | |
* | |
* @var string | |
*/ | |
private $fullName; | |
/** | |
* @ORM\Column(name="email", type="string", length=77) | |
* | |
* @var string | |
*/ | |
private $email; | |
/** | |
* @ORM\Column(name="phone_number", type="string", length=17) | |
* | |
* @var string | |
*/ | |
private $phoneNumber;} | |
28.10.2016 23:05:22, Muhammad Surya: monggo dicopy dan buat sampai CRUDnya dengan generator π | |
28.10.2016 23:05:31, Muhammad Surya: nanti kita coba bahas satu2 π | |
28.10.2016 23:05:54, Muhammad Surya: masih ingat kan generate entities, schema update kemudian generate crud? | |
28.10.2016 23:06:00, Muhammad Surya: commandnya masih apal kan? | |
28.10.2016 23:06:13, Iqbal: lupa om π | |
28.10.2016 23:06:16, Nur Rahmat Taufik(you): Lupa π | |
28.10.2016 23:07:02, Muhammad Surya: wkwkwk parah | |
28.10.2016 23:07:05, Muhammad Surya: ok lah | |
28.10.2016 23:07:36, Muhammad Surya: $ php bin/console doctrine:generate:entities AppBundle:Contact | |
Generating entity "AppBundle\Entity\Contact" | |
> backing up Contact.php to Contact.php~ | |
> generating AppBundle\Entity\Contact | |
28.10.2016 23:07:54, Muhammad Surya: sudah bisa? | |
28.10.2016 23:08:16, Muhammad Surya: $ php bin/console doctrine:schema:update --force | |
28.10.2016 23:08:24, Muhammad Surya: sek cari colokan dulu mau mati | |
28.10.2016 23:09:09, Muhammad Surya: ok bagaimana bisa? | |
28.10.2016 23:10:10, Muhammad Surya: Wah ngantuk ni pasti | |
28.10.2016 23:10:16, Muhammad Surya: udah pada tidur ya? | |
28.10.2016 23:10:17, Iqbal: bisa om.. | |
28.10.2016 23:10:19, Nur Rahmat Taufik(you): Database schema updated successfully! "2" queries were executed | |
28.10.2016 23:10:28, Nur Rahmat Taufik(you): 2 queries maksudnya apa pak | |
28.10.2016 23:10:46, Muhamad: bisa om | |
28.10.2016 23:10:54, Muhammad Surya: php bin/console doctrine:generate:crud AppBundle:Contact | |
28.10.2016 23:11:09, Muhammad Surya: Create table dan create relation (foreign key) | |
28.10.2016 23:11:26, Muhammad Surya: bisa dicek hasilnya langsung di database π | |
28.10.2016 23:11:36, Muhammad Surya: enaknya di Symfony kita ga perlu ngurusin begituan | |
28.10.2016 23:12:13, Nur Rahmat Taufik(you): pak generate crudnya, no, yes yes yes ya? | |
28.10.2016 23:12:14, Nur Rahmat Taufik(you): lupa hehe | |
28.10.2016 23:12:26, Muhammad Surya: yes | |
28.10.2016 23:12:31, Muhammad Surya: yang create write | |
28.10.2016 23:12:40, Muhammad Surya: yang lain enter aja π | |
28.10.2016 23:13:30, Muhammad Surya: kalau mau ngulang tinggal ditambahkan di command tadi dibelakang --overwrite | |
28.10.2016 23:13:46, Muhammad Surya: jadi dia akan nimpa hasil generate yang pertama | |
28.10.2016 23:13:55, Muhammad Surya: gimana? sudah berhasil semua? | |
28.10.2016 23:13:59, Muhamad: uda om | |
28.10.2016 23:14:26, Muhammad Surya: Gimana setelah dijalankan? | |
28.10.2016 23:14:30, Muhammad Surya: Berhasil juga? | |
28.10.2016 23:14:35, Nur Rahmat Taufik(you): lanjut | |
28.10.2016 23:14:50, Muhammad Surya: Jalanin... lanjut2 aja wkwkwk | |
28.10.2016 23:15:01, Iqbal: udh bisa om.. | |
28.10.2016 23:15:04, Nur Rahmat Taufik(you): wkwk | |
28.10.2016 23:15:14, Muhammad Surya: Bisa jalan? | |
28.10.2016 23:15:17, Iqbal: eh tp pas create error | |
28.10.2016 23:15:28, Muhammad Surya: Sudah seharusnya | |
28.10.2016 23:15:34, Muhammad Surya: ada yang ngerti alasannya | |
28.10.2016 23:15:46, Iqbal: | |
28.10.2016 23:16:14, Muhammad Surya: Ok | |
28.10.2016 23:16:19, Muhammad Surya: yang lain sama kan? | |
28.10.2016 23:16:20, Muhammad Surya: π | |
28.10.2016 23:16:31, Muhammad Surya: Bagaimana mengatasi errornya? | |
28.10.2016 23:16:50, Muhammad Surya: Sebelum kesitu, saya jelaskan kenapa error itu berasal | |
28.10.2016 23:17:02, Muhammad Surya: eh darimana kok kenapa sih :v | |
28.10.2016 23:17:27, Iqbal: iya om kenapa bisa error ? | |
28.10.2016 23:17:31, Muhammad Surya: ->add('group') | |
28.10.2016 23:17:35, Muhammad Surya: di form ada itu | |
28.10.2016 23:18:06, Iqbal: iya ada om .. | |
28.10.2016 23:18:44, Muhammad Surya: public function getGroup() | |
{ | |
return $this->group; | |
} | |
28.10.2016 23:18:59, Muhammad Surya: di entity Contact | |
28.10.2016 23:19:09, Muhammad Surya: sek lihat dulu ya di entity contact | |
28.10.2016 23:20:56, Iqbal: iya ada om , terus gimana ? | |
28.10.2016 23:22:51, Muhammad Surya: sorry π | |
28.10.2016 23:22:55, Muhammad Surya: Ok lanjut ya | |
28.10.2016 23:23:04, Muhammad Surya: Jadi gini flownya | |
28.10.2016 23:23:24, Muhammad Surya: Ingat kembali penjelasan tentang form kemarin | |
28.10.2016 23:23:50, Muhammad Surya: bahwa form terkoneksi atau berelasi dengan sebuah class (gampangnya entity walau ga selalu entity) | |
28.10.2016 23:24:13, Muhammad Surya: Nah karena entity Contact berelasi dengan entity Group | |
28.10.2016 23:24:31, Muhammad Surya: /** | |
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Group", cascade={"persist"}) | |
* @ORM\JoinColumn(name="group_id", referencedColumnName="id") | |
* | |
* @var Group | |
*/ | |
private $group; | |
28.10.2016 23:25:04, Muhammad Surya: @ORM\ManyToOne(targetEntity="AppBundle\Entity\Group", cascade={"persist"}) | |
28.10.2016 23:25:20, Muhammad Surya: Sehingga property $group berisi class/entity Group | |
28.10.2016 23:25:53, Muhammad Surya: karena berisi Group (object dari class Group) maka ketika di echo akan error | |
28.10.2016 23:26:00, Muhammad Surya: bingung? | |
28.10.2016 23:26:04, Muhamad: ngga om | |
28.10.2016 23:26:21, Muhammad Surya: Ok | |
28.10.2016 23:26:25, Muhamad: lanjut, makanya tadi errornya object ga bisa di convert ke string | |
28.10.2016 23:26:32, Muhamad: iya kan ya | |
28.10.2016 23:26:36, Muhammad Surya: Yup | |
28.10.2016 23:27:01, Muhammad Surya: Cara paling mudah adalah dengan memakai magic method __toString pada Group | |
28.10.2016 23:27:38, Muhammad Surya: public function __toString() | |
{ | |
return $this->getName(); | |
} | |
28.10.2016 23:27:41, Muhammad Surya: seperti itu | |
28.10.2016 23:27:45, Muhammad Surya: monggo dicoba | |
28.10.2016 23:28:02, Muhammad Surya: itu ditambahkan pada entity Group ya bukan entity Contact | |
28.10.2016 23:28:26, Muhamad: annotationnya om ? | |
28.10.2016 23:28:30, Iqbal: bisa om .. | |
28.10.2016 23:28:36, Muhammad Surya: Bukan | |
28.10.2016 23:28:38, Muhammad Surya: di Entity | |
28.10.2016 23:28:39, Muhamad: pake atau biarkan kosong ? | |
28.10.2016 23:28:51, Muhammad Surya: public function setName($name) | |
{ | |
$this->name = $name; | |
} | |
public function __toString() | |
{ | |
return $this->getName(); | |
} | |
28.10.2016 23:28:57, Muhammad Surya: dibawah setName | |
28.10.2016 23:29:50, Muhammad Surya: Bagaimana sudah tidak error kan? | |
28.10.2016 23:31:24, Iqbal: iya udh engga om crud nya juga udh bisa | |
28.10.2016 23:32:20, Muhamad: ane dapat ini om | |
28.10.2016 23:32:28, Muhamad: | |
28.10.2016 23:32:51, Muhammad Surya: itu pas apa ya? | |
28.10.2016 23:32:59, Muhammad Surya: sudah ada belum entitynya? | |
28.10.2016 23:33:04, Muhamad: sudah om, | |
28.10.2016 23:33:05, Muhammad Surya: kok bisa error begitu? | |
28.10.2016 23:33:06, Muhamad: pas create | |
28.10.2016 23:33:11, Muhammad Surya: clear cache coba | |
28.10.2016 23:33:16, Muhammad Surya: php bin/console cache:clear | |
28.10.2016 23:33:31, Muhammad Surya: sekalian coba copas Contact.php-nya | |
28.10.2016 23:34:45, Muhammad Surya: Bagaimana masih error? | |
28.10.2016 23:34:58, Muhammad Surya: Yang lain apakah ada juga yang dapat error? | |
28.10.2016 23:36:08, Muhammad Surya: Gimana @malfan apakah masih error? | |
28.10.2016 23:36:14, Muhammad Surya: Yang lain apakah sudah bisa? | |
28.10.2016 23:36:16, Muhamad: maaf om agak lama | |
28.10.2016 23:36:19, Muhammad Surya: ataukah tidur? | |
28.10.2016 23:36:20, Muhamad: laptopnya lagi kumat | |
28.10.2016 23:36:35, Muhammad Surya: wkwkwk ok ga masalah | |
28.10.2016 23:36:39, Nur Rahmat Taufik(you): bisa create pak | |
28.10.2016 23:36:40, Muhamad: hehehe | |
28.10.2016 23:37:01, Muhammad Surya: Udah ga error ya | |
28.10.2016 23:37:05, Muhamad: ini laptopnya kayanya minta ganti hardisk ... ππ | |
28.10.2016 23:37:19, Muhammad Surya: Waduh | |
28.10.2016 23:37:41, Muhamad: kemarin uda 2 kali blue screen | |
28.10.2016 23:37:46, Muhammad Surya: Pada dasarnya kalau stepnya bener tidak akan error dengan menambahkan __toString tadi | |
28.10.2016 23:37:47, Muhamad: π’ | |
28.10.2016 23:37:55, Muhammad Surya: Itu cara pertama | |
28.10.2016 23:38:08, Muhammad Surya: Cara kedua, dengan merubah form hasil generate | |
28.10.2016 23:38:23, Muhammad Surya: $builder | |
->add('fullName') | |
->add('email') | |
->add('phoneNumber') | |
->add('group', EntityType::class, array( | |
'class' => Group::class, | |
'choice_label' => 'name', | |
)) | |
; | |
28.10.2016 23:38:33, Muhammad Surya: use AppBundle\Entity\Group; | |
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |
28.10.2016 23:38:43, Iqbal: oh ya pake entitiy type | |
28.10.2016 23:38:54, Muhammad Surya: itu use dan Formnya | |
28.10.2016 23:39:13, Muhammad Surya: yang __toString bisa comment agar bisa membedakan π | |
28.10.2016 23:40:18, Muhammad Surya: Bagaimana, apakah ada perbedaan? | |
28.10.2016 23:40:18, Muhammad Surya: π | |
28.10.2016 23:40:33, Nur Rahmat Taufik(you): ini di taruh dimana | |
28.10.2016 23:40:56, Nur Rahmat Taufik(you): di Form\ContactType? | |
28.10.2016 23:40:57, Muhammad Surya: dipaling atas di form ContactType | |
28.10.2016 23:41:16, Muhammad Surya: yup | |
28.10.2016 23:41:42, Iqbal: pas choice group nya aja kayanya beda nya | |
28.10.2016 23:41:49, Muhammad Surya: bagaimana? | |
28.10.2016 23:41:59, Muhammad Surya: Bedanya apa bal? | |
28.10.2016 23:42:37, Fariz: undefined | |
28.10.2016 23:42:43, Iqbal: kalo pake __toString pas create choice nya blm ke pilih.. | |
tp kalo pake entity langsung ke pilih | |
28.10.2016 23:42:58, Muhammad Surya: Yup kanan alias right | |
28.10.2016 23:43:53, Muhammad Surya: Bagaimana sudah bisa tau ya caranya kalau misal muncul error convert to string lagi π | |
28.10.2016 23:44:06, Muhammad Surya: Sebenarnya ada cara ketiga dan keempat π | |
28.10.2016 23:44:22, Iqbal: iya om paham .. | |
28.10.2016 23:44:23, Muhammad Surya: Banyak cara lah kalau nanti kalian sudah paham Symfony form π | |
28.10.2016 23:44:25, Nur Rahmat Taufik(you): __toString() magic juga ya pak | |
28.10.2016 23:44:38, Muhammad Surya: itu magic method bawaan PHP | |
28.10.2016 23:44:41, Muhammad Surya: bukan Symfony | |
28.10.2016 23:45:26, Muhammad Surya: Untuk yang Contact ini gue ga akan membahas lagi Controller-nya karena sama aja dengan group, bahasan cuma sampai form aja π | |
28.10.2016 23:46:00, Muhammad Surya: Ok bonus cara ketiga dan lebih fleksibel π | |
28.10.2016 23:46:56, Muhammad Surya: 'choice_label' => function ($group) { | |
/** G@var Group $group */ | |
return sprintf('%s | %s', $group->getCode(), $group->getName()); | |
}, | |
28.10.2016 23:47:07, Muhammad Surya: Pakai choice_label π | |
28.10.2016 23:47:27, Muhammad Surya: kalian bisa modifikasi label choicenya sesuka kalian | |
28.10.2016 23:48:37, Muhammad Surya: Bagaimana? ada pertanyaan? | |
28.10.2016 23:48:40, Muhamad: di bagian ini /** G@var Group $group */ | |
28.10.2016 23:48:44, Muhammad Surya: Waktu tinggal 10 menit π | |
28.10.2016 23:48:52, Muhammad Surya: Cuma comment π | |
28.10.2016 23:48:52, Nur Rahmat Taufik(you): Ditaruh dimana paj | |
28.10.2016 23:49:00, Muhamad: ini maksudnya G@var apa ya om | |
28.10.2016 23:49:04, Muhammad Surya: gantiin tadi | |
28.10.2016 23:49:06, Muhamad: ada G nyelip gtu | |
28.10.2016 23:49:13, Muhammad Surya: iya itu typo | |
28.10.2016 23:49:15, Muhammad Surya: kelebihan | |
28.10.2016 23:49:19, Muhammad Surya: harusnya @var | |
28.10.2016 23:49:22, Muhamad: owalah kirain apa | |
28.10.2016 23:49:39, Muhamad: *kali ada maksud tertentu | |
28.10.2016 23:49:46, Muhammad Surya: Gantiin ini @taufikherjanto | |
28.10.2016 23:50:16, Muhammad Surya: Dibagian choice_label | |
28.10.2016 23:50:58, Muhammad Surya: Bagaimana sudah bisa muncul code | name? | |
28.10.2016 23:51:10, Muhamad: bisa om | |
28.10.2016 23:51:11, Nur Rahmat Taufik(you): muncul | |
28.10.2016 23:51:26, Muhammad Surya: Ok mantab | |
28.10.2016 23:51:38, Muhammad Surya: sampai disini ada pertanyaan | |
28.10.2016 23:51:40, Nur Rahmat Taufik(you): nambahin option 'Pilih Group' gimana pak? | |
28.10.2016 23:52:55, Muhammad Surya: 'placeholder' => 'Pilih Group', | |
28.10.2016 23:53:00, Muhammad Surya: bisa pakai placeholder | |
28.10.2016 23:54:23, Nur Rahmat Taufik(you): bisa pak hehe | |
28.10.2016 23:54:40, Muhammad Surya: Bagaimana apakah masih ada pertanyaan lagi | |
28.10.2016 23:54:43, Muhammad Surya: π | |
28.10.2016 23:54:50, Muhamad: hari ini kyanya cukup om | |
28.10.2016 23:54:53, Muhammad Surya: sepertinya sudah pada ngantuk π | |
28.10.2016 23:54:56, Muhamad: hehehe | |
28.10.2016 23:55:21, Muhamad: mau di cerna2 dlu | |
28.10.2016 23:55:23, Iqbal: kalo kita mau nambahin style menggunakan class gimana om ? | |
28.10.2016 23:55:27, Muhammad Surya: Hehehe kalau memang sudah tidak ada, saya cukupkan sampai disini untuk pertemuan ke 3 (atau 4 ya?) | |
28.10.2016 23:55:36, Muhamad: 3 om | |
28.10.2016 23:55:46, Iqbal: itu kan class nya udh di isi Group::class | |
28.10.2016 23:56:13, Muhammad Surya: 'attr' => array('class' => 'css class') | |
28.10.2016 23:56:26, Muhammad Surya: Lihat Guidenesia bal π | |
28.10.2016 23:56:40, Iqbal: ah iya yah lupa π | |
28.10.2016 23:56:46, Iqbal: oke oke om udh cukup | |
28.10.2016 23:56:48, Muhammad Surya: Ok pertemuan ketiga ini saya akhiri ya π | |
28.10.2016 23:56:53, Iqbal: terimakasih banyak ilmu nya π | |
28.10.2016 23:57:05, Muhammad Surya: Semoga yang sedikit ini bisa bermanfaat bagi kita semua termasuk saya π | |
28.10.2016 23:57:06, Nur Rahmat Taufik(you): terima kasih pak | |
28.10.2016 23:57:23, Muhammad Surya: Dengan sharing seperti ini, saya juga belajar kembali π | |
28.10.2016 23:57:56, Muhamad: terima kasih banyak om sur... mudah2n ilmunya tambah berkah ya | |
28.10.2016 23:57:59, Muhammad Surya: Terima kasih semuanya... Semoga ilmunya makin berkah dan manfaat π | |
Sampai bertemu minggu depan, Assalamu'alaikum warohmatulalh wabarokatuh | |
28.10.2016 23:58:05, Muhamad: dan cepat kita cerna | |
28.10.2016 23:58:10, Muhammad Surya: amiiiinnnnnn | |
28.10.2016 23:58:14, Muhamad: sampai minggu depan lagi om | |
28.10.2016 23:58:18, Muhamad: wa'alaikum salam.. | |
28.10.2016 23:58:30, Nur Rahmat Taufik(you): wa'alaikumussalam wr. wb | |
28.10.2016 23:59:05, rudjok: waalaikumsalam, makasih banyak untk materi minggu ini, om. | |
28.10.2016 23:59:23, Iqbal: Amin. | |
28.10.2016 23:59:27, Iqbal: walaikumsalam... | |
29.10.2016 00:00:56, Fariz: Walaikumsalam | |
29.10.2016 00:01:00, Muhammad Surya: Materinya sudah ane upload π | |
29.10.2016 00:01:01, Muhammad Surya: https://github.com/ad3n/SymfonyIdCourse | |
29.10.2016 00:01:12, Muhammad Surya: hari ini lebih 1/2 jam dari jadwal wkwkwk π | |
29.10.2016 00:03:21, Nur Rahmat Taufik(you): Hitung hitung sedekah pak π | |
29.10.2016 00:03:43, Muhammad Surya: | |
29.10.2016 00:03:45, Muhammad Surya: ππππ | |
29.10.2016 00:03:56, Muhammad Surya: seeeepppp | |
29.10.2016 00:04:05, Muhamad: *bisa jadi om sur keasikan nostalgia ketika belajar dlu, hehehe | |
29.10.2016 00:09:55, Yuan: wah saya ketiduran. hahaha.. nanti direview semua yang di sini. xie xie | |
29.10.2016 00:12:34, Muhammad Surya: Sadar kok sebenarnya cuma memang materinya nanggung jadi habisin sekalian | |
29.10.2016 00:12:49, Muhammad Surya: Pertemuan depan mulai masuk ke service | |
29.10.2016 00:39:53, dery: undefined | |
29.10.2016 00:40:24, Muhamad: siap om sur... sekali lagi makasih banyak ya om π | |
29.10.2016 02:07:00, Iyan: undefined | |
29.10.2016 04:40:56, Achmadi: undefined | |
29.10.2016 05:35:16, Hendro: undefined | |
29.10.2016 05:35:29, Sapto: undefined | |
29.10.2016 05:44:56, Ari: undefined | |
29.10.2016 05:47:21, Muhammad Surya: @all new members: | |
Terima kasih sudah bergabung... | |
29.10.2016 05:48:29, Ari: terimakasih sudah di ijinkan bergabung om @AdenKejawen :) | |
29.10.2016 06:14:45, Indra: undefined | |
29.10.2016 06:23:45, Hendro: Cara lihat arsip diskusi gimana ya? | |
29.10.2016 06:26:50, budho: undefined | |
29.10.2016 06:56:22, Tri: undefined | |
29.10.2016 07:22:15, Muhammad Habib: undefined | |
29.10.2016 07:45:08, Budiman Oktavianus: undefined | |
29.10.2016 07:46:23, Budiman Oktavianus: salam kenal suhu2 disini, beginner nih | |
29.10.2016 08:13:16, Muhammad Surya: Discroll keatas pak | |
29.10.2016 08:15:06, anugrah: undefined | |
29.10.2016 08:18:13, Muhammad Surya: Yang penting udah bisa OO karena disini ga akan dibahas lagi hehehe | |
29.10.2016 08:20:03, Sapto: Mentok kang sur, historynya ga kluar | |
29.10.2016 08:21:11, Muhammad Surya: Ok nanti saya coba copas/rangkum dari awal untuk yang baru | |
29.10.2016 08:29:39, Sapto: Masyaallah... π | |
Terima kasih kang π | |
29.10.2016 08:31:40, Hendro: Ga bisa kang. | |
29.10.2016 08:31:56, Hendro: | |
29.10.2016 08:32:00, Hendro: Mentok | |
29.10.2016 08:32:03, Muhammad Surya: https://github.com/ad3n/SymfonyIdCourse | |
29.10.2016 08:32:18, Muhammad Surya: Untuk hasil terakhir itu | |
29.10.2016 08:32:49, Muhammad Surya: Cuma nanti pas luang saya rangkum | |
29.10.2016 08:39:28, Hendro: Oke terima kasih kang surya π | |
29.10.2016 08:51:24, Iyan: terima kasih master Surya | |
29.10.2016 08:51:29, Iyan: sudah diijinkan gabung | |
29.10.2016 08:51:37, Iyan: newbie nunut belajar symfony | |
29.10.2016 08:51:46, Iyan: | |
29.10.2016 08:51:58, Iyan: | |
29.10.2016 08:53:14, Iyan: ini om Hendro yang buat senayan ? | |
29.10.2016 09:18:31, Muhammad Surya: Yup | |
29.10.2016 09:19:20, Iyan: itu pakai PHP versi berapa om ? | |
29.10.2016 09:19:43, Iyan: yang platform sudah download begitu di composer install | |
29.10.2016 09:19:49, Iyan: butuh 5.6.17 | |
29.10.2016 09:24:54, Hendro: | |
29.10.2016 09:33:55, Iyan: Wew ada master Senayan | |
29.10.2016 09:36:46, Akku Iki Alie: undefined | |
29.10.2016 09:37:08, Muhammad Surya: Pakai yang dilink | |
29.10.2016 09:37:19, Muhammad Surya: Jangan pakai Platform | |
29.10.2016 09:37:42, Iyan: yang ini om ? | |
29.10.2016 09:37:48, Muhammad Surya: Yup | |
29.10.2016 09:38:04, Iyan: itu PHP versi berapa ? | |
29.10.2016 09:38:29, Iyan: yang 7 belum install | |
29.10.2016 09:39:25, Iyan: | |
29.10.2016 09:42:29, Muhammad Surya: Asal bisa jalankan Symfony aja | |
29.10.2016 09:44:02, Matth: undefined | |
29.10.2016 09:45:10, Muhammad Surya: Pakai ini gan | |
29.10.2016 09:45:10, Muhammad Surya: https://github.com/ad3n/SymfonyIdCourse | |
29.10.2016 09:50:19, Muhammad Surya: Kalau ada yang bisa bantu ngerangkum @hak11 or Iqbal or Tegar or @taufikherjanto or Rujok | |
29.10.2016 10:52:19, Matth: undefined | |
30.10.2016 01:32:28, Nur Rahmat Taufik(you): ya saya coba ngerangkum |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment