Menambahkan Group pada Aplikasi Kontak
I. Membuat CRUD untuk Group
Untuk membuat CRUD Group, kita akan mencoba menggunakan pendekatan yang berbeda dengan sebelumnya. Kita akan mencoba menggunakan CRUD Generator dari Symfony.
Seperti yang sudah disinggung pada bab sebelumnya, bahwa di Symfony telah ada CRUD Generator, namun saya sendiri tidak menggunakan CRUD Generator tersebut untuk keperluan project saya. Namun bila Anda dikejar deadline dan ingin membangun aplikasi secara instant, mungkin Anda layak untuk mencobanya.
Untuk menggunakan fitur tersebut, kita cukup menjalankan perintah berikut:
1 php bin/console doctrine:generate:crud AppBundle:Group \
2 --overwrite
Kemudian ikut dan jawab pertanyaan singkatnya, maka CRUD untuk entity Group pun telah selesai dibuat. Kita menambahkan option --overwrite karena pada pembahasan sebelumnya, kita telah memiliki controller dengan nama GroupController sehingga perlu di-overwrite.
II. Limitasi
Perlu Anda pahami, bahwa dengan menggunakan CRUD Generator maka harus tahu tentang keterbatasan CRUD Generator tersebut. Bila kita menggunakan CRUD Generator maka kita akan menemui perbedaan letak folder dengan CRUD yang kita buat sebelumnya secara manual.
Bila secara manual view yang kita buat disimpan dalam folder AppBundle/Resources/views maka dengan menggunakan generator, view kita akan disimpan pada folder app/Resources/views.
Selain itu, form kita yang sebelumnya kita simpan dalam folder AppBundle/Form/Type, jika menggunakan generator maka form akan disimpan pada folder AppBundle/Form.
Selain letak form-nya berbeda, perbedaan lain pada form juga terdapat pada pendefinisian form field dimana jika menggunakan generator maka pendefinisian form field menggunakan type guesser seperti berikut:
1 $builder
2 ->add('name')
3 ;
Dengan cara seperti diatas, Symfony secara otomatis akan mengambil field type dari Doctrine mapping. Dan karena pada mapping field name bertipe string seperti berikut:
1 @ORM\Column(name="name", type="string", length=77)
Maka secara otomatis, Symfony akan menganggapnya sebagai TextType.
III. Meng-update form dan view Contact
Langkah terakhir untuk menyempurnakan aplikasi Kontak Sederhana kita, kita perlu untuk menambahkan Group kedalam form dan juga view Contact kita.
Pada form kita cukup menambahkan field group sebagai berikut:
1 public function buildForm(FormBuilderInterface $bui\
2 lder, array $options)
3 {
4 $builder
5 ->add('group', EntityType::class, array(
6 'class' => Group::class,
7 'choice_label' => 'name',
8 ))
9 ->add('name', TextType::class)
10 ->add('phoneNumber', TextType::class)
11 ->add('email', EmailType::class)
12 ;
13 }
Dan pada view kita cukup memanggil group seperti berikut:
- Pada
index.html.twig
1 <td><a href="{{ path('contact_show', { \
2 'id': contact.id }) }}">{{ contact.id }}</a></td>
3 <td>{{ contact.group.name }}</td>
4 <td>{{ contact.name }}</td>
5 <td>{{ contact.phoneNumber }}</td>
6 <td>{{ contact.email }}</td>
- Pada
show.html.twig
1 <tr>
2 <th>Id</th>
3 <td>{{ contact.id }}</td>
4 </tr>
5 <tr>
6 <th>Group</th>
7 <td>{{ contact.group.name }}</td>
8 </tr>
9 <tr>
10 <th>Name</th>
11 <td>{{ contact.name }}</td>
12 </tr>
IV. Menjalankan Aplikasi
Perlu Anda ketahui, karena Contact dan Group sudah terhubung, baik dari view maupun form-nya. Maka Anda harus menambahkan minimal 1 Group sebelum Anda membuka halaman New Contact atau Edit Contact. Hal tersebut perlu dilakukan karena pada form langsung terhubung dengan tabel Group pada database.