Pesan Flash Phalcon

Pesan flash Phalcon digunakan untuk memberitahu pengguna tentang status tindakan yg dilakukan atau hanya menampilkan informasi kepada pengguna. Pesan semacam ini dapat dihasilkan dengan menggunakan komponen ini.

Adapter 

Komponen ini memanfaatkan adapter untuk menentukan perilaku dari pesan setelah dilewatkan ke Flasher:

Adaptor Deskripsi API
Direct Langsung output pesan yang dikirimkan ke flasher Phalcon \ flash \ Direct
Session Sementara menyimpan pesan dalam sesi, maka pesan dapat dicetak dalam request berikutnya Phalcon \ flash \ Session

Penggunaan Pesan Flash Phalcon 

Biasanya layanan Flash Messaging diminta dari wadah layanan, jika Anda menggunakan Phalcon \ DI \ FactoryDefault kemudian Phalcon \ flash \ Direct secara otomatis terdaftar sebagai layanan “flash” :

<?php

//Set up the flash service
$di->set('flash', function() {
    return new \Phalcon\Flash\Direct();
});

Dengan cara ini, Anda dapat menggunakannya di controller atau tampilan dengan menyuntikkan layanan dalam lingkup yang diperlukan:

<?php

class PostsController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }

    public function saveAction()
    {
        $this->flash->success("The post was correctly saved!");
    }

}

Ada empat jenis pesan built-in yg didukung:

<?php

$this->flash->error("too bad! the form had errors");
$this->flash->success("yes!, everything went very smoothly");
$this->flash->notice("this a very important information");
$this->flash->warning("best check yo self, you're not looking too good.");

Anda dapat menambahkan pesan dengan jenis Anda sendiri:

<?php

$this->flash->message("debug", "this is debug message, you don't say");

Mencetak Pesan 

Pesan yang dikirim ke layanan flash secara otomatis diformat dengan html:

<div class="errorMessage">too bad! the form had errors</div>
<div class="successMessage">yes!, everything went very smoothly</div>
<div class="noticeMessage">this a very important information</div>
<div class="warningMessage">best check yo self, you're not looking too good.</div>

Seperti yang Anda lihat, kelas CSS ditambahkan secara otomatis ke DIVs. Kelas-kelas ini memungkinkan Anda untuk menentukan style presentasi grafis dari pesan dalam browser. Kelas-kelas CSS dapat diganti, misalnya, jika Anda menggunakan Twitter bootstrap, kelas dapat dikonfigurasi sebagai:

<?php

//Register the flash service with custom CSS classes
$di->set('flash', function(){
    $flash = new \Phalcon\Flash\Direct(array(
        'error' => 'alert alert-error',
        'success' => 'alert alert-success',
        'notice' => 'alert alert-info',
    ));
    return $flash;
});

Kemudian pesan akan dicetak sebagai berikut:

<div class="alert alert-error">too bad! the form had errors</div>
<div class="alert alert-success">yes!, everything went very smoothly</div>
<div class="alert alert-info">this a very important information</div>

Flush implisit vs Sesi 

Tergantung pada adaptor yg digunakan untuk mengirim pesan, bisa menghasilkan output secara langsung, atau menyimpan pesan sementara dalam sesi yang akan ditampilkan nantinya. Kapan sebaiknya Anda menggunakan masing-masing? Itu biasanya tergantung pada jenis redirection yang Anda lakukan setelah mengirim pesan. Misalnya, jika Anda membuat “forward” tidak perlu untuk menyimpan pesan dalam sesi, tetapi jika Anda melakukan HTTP redirect setelahnya, pesan tsb harus disimpan dalam sesi:

<?php

class ContactController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }

    public function saveAction()
    {

        //store the post

        //Using direct flash
        $this->flash->success("Your information was stored correctly!");

        //Forward to the index action
        return $this->dispatcher->forward(array("action" => "index"));
    }

}

Atau menggunakan redirection HTTP:

<?php

class ContactController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }

    public function saveAction()
    {

        //store the post

        //Using session flash
        $this->flashSession->success("Your information was stored correctly!");

        //Make a full HTTP redirection
        return $this->response->redirect("contact/index");
    }

}

Dalam hal ini Anda perlu untuk mencetak pesan secara manual pada tampilan yang sesuai:

<!-- app/views/contact/index.phtml -->

<p><?php $this->flashSession->output() ?></p>

Atribut ‘flashSession’ adalah bagaimana flash telah ditetapkan sebelumnya ke dalam dependency injection container. Anda perlu untuk memulai sesi dahulu agar bisa menggunakan messenger flashSession.

 

Terjemahan dr Pesan Flash Pada Phalcon
http://docs.phalconphp.com/en/latest/reference/flash.html