# Bekerja Dengan Controller

Dalam framework yang menggunakan pola desain MVC, controller merupakan komponen utama yang berperan sebagai pemroses permintaan. Anda bisa saja membuat aplikasi berpola MVC tanpa menggunakan model atau view namun tidak mungkin tanpa menggunakan komponen controller.

Mari kita mulai membuat sebuah controller pada O2System Framework. Sebagai contoh kita akan membuat halaman Hello World dengan menggunakan controller.

## 1. Membuat Controller

Buatlah sebuah file Controller berekstensi [php](http://filext.com/file-extension/PHP) dan simpanlah pada [directory Controller](/pengantar/struktur-direktori.md#direktori-controllers-commanders), berisikan kode seperti pada contoh dibawah ini:

{% code title="/path/to/app/Controllers/HelloWorld.php" %}

```php
<?php
namespace App\Controllers;

use O2System\Framework\Http\Controller;

/**
* Class HelloWorld
*
* @package App\Controllers
*/
class HelloWorld extends Controller
{
}
```

{% endcode %}

## 2. Membuat Metode

Tambahkanlah kode seperti dibawah ini pada file controller yang telah anda buat pada langkah sebelumnya, metode pada controller mereprentasikan aksi yang akan dieksekusi.

{% code title="/path/to/app/Controllers/HelloWorld.php" %}

```php
<?php
namespace App\Controllers;

use O2System\Framework\Http\Controller;

/**
* Class HelloWorld
*
* @package App\Controllers
*/
class HelloWorld extends Controller
{
   /**
    * HelloWorld::index
    */
    public function index()
    {
        
    } 
}
```

{% endcode %}

## 3. Membuat View

Buatlah sebuah file View bereksentsi [phtml](http://filext.com/file-extension/PHTML) dan simpanlah pada [directory Views](/pengantar/struktur-direktori.md#direktori-views), berisikan kode seperti pada contoh dibawah ini:

{% code title="/path/to/app/Views/hello-world.phtml" %}

```markup
<h1>Hello World!</h1>
```

{% endcode %}

## 4. Memanggil View

Setelah anda membuat file View, mari kita kembali kepada file Controller yang telah anda buat pada langkah pertama. Tambahkanlah perintah pemanggilan view seperti kode dibawah ini pada metode controller.

{% code title="/path/to/app/Controllers/HelloWorld.php" %}

```php
<?php
namespace App\Controllers;

use O2System\Framework\Http\Controller;

/**
* Class HelloWorld
*
* @package App\Controllers
*/
class HelloWorld extends Controller
{
   /**
    * HelloWorld::index
    */
    public function index()
    {
        $this->load->view('hello-world');
    } 
}
```

{% endcode %}

Alternatif perintah untuk melakukan pemanggilan view pada controller yang anda buat adalah dengan perintah seperti dibawah ini.

{% code title="/path/to/app/Controllers/HelloWorld.php" %}

```php
<?php
namespace App\Controllers;

use O2System\Framework\Http\Controller;

/**
* Class HelloWorld
*
* @package App\Controllers
*/
class HelloWorld extends Controller
{
   /**
    * HelloWorld::index
    */
    public function index()
    {
        view('hello-world');
    } 
}
```

{% endcode %}

> Pilihlah gaya bahasa penulisan kode yang anda sukai dan terapkan selanjutnya sebagai standarisasi gaya penulisan kode anda.

## 5. Mengirim Data

Pada langkah-langkah sebelumnya kita telah mempelajari bagaimana cara membuat controller, metode controller dan melakukan perintah untuk memanggil view pada controller. Langkah selanjutnya yang akan kita pelajari adalah bagaimana melakukan pengiriman data atau variable ke view melalui controller.

{% code title="/path/to/app/Controllers/HelloWorld.php" %}

```php
<?php
namespace App\Controllers;

use O2System\Framework\Http\Controller;

/**
* Class HelloWorld
*
* @package App\Controllers
*/
class HelloWorld extends Controller
{
   /**
    * HelloWorld::index
    */
    public function index()
    {
        $this->load->view('hello-world', [
            'name' => 'Steeven Andrian'
        ]);
    } 
}
```

{% endcode %}

Untuk memanggil data tersebut pada file view anda ubahlah file view yang telah anda buat tadi pada langkah ke 3, seperti kode dibawah ini:

{% code title="/path/to/app/Views/hello-world.phtml" %}

```markup
<h1>
    Hello World!
    <small class="text-muted">
        My name is <?php echo $name; ?>
    </small>
</h1>
```

{% endcode %}

## 6. Mengakses Controller

Anda dapat mengakses halaman dengan controller ini melalui browser anda dengan mengetikkan alamat URL seperti dibawah ini:

```
http://localhost:8000/hello-world
```

> Perhatikan format penulisan segmentasi url about-us diatas yang berformat dash. Format ini merupakan cara penulisan alamat segmentasi url yang paling dianjurkan karena bersifat Search Engine Friendly (SEF) URL.\
> Khusus untuk metode index pada controller anda tidak perlu menuliskannya pada alamat URL anda.

Untuk penggunaan lebih lanjut anda dapat membacanya pada bagian pendalaman [Controller](/pendalaman/controller.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://userguide.o2system.id/tutorial/bekerja-dengan-controller.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
