menu

Showing posts with label Phalcon-Chapter1. Show all posts
Showing posts with label Phalcon-Chapter1. Show all posts

Phalcon - Introduction syntax


Pada tutorial kemarin kita sudah berexperiment menambahkan file .env dan membuat function dd yang digunakan untuk debug code,

Sebelum masuk ke tutorial crud maka ada baiknya kita biasakan diri terlebih dahulu dengan syntax-syntax yang ada apa phalcon,

Oke langsung saja kita mulai bereksperiment dengan phalcon,
Pertama, edit file router.php pada path app/config/ menjadi seperti ini, 
<?php

$router = $di->getRouter();

// Define your routes here
/**
 * Get user lists data by query
 */
$router->addGet(
    "/test",
    [
        "controller"        => "test",
        "action"            => "test"
    ]
);

$router->handle();

Selanjutnya, buat file TestController.php dan isikan code berikut,
<?php

use Phalcon\Forms\Element\Text;
use Phalcon\Forms\Form;

class TestController extends ControllerBase
{
    public function testAction()
    {
     $users = ['aan', 'hei', 'lala'];
     $genders = [
      'LK' => 'Laki-laki',
      'PR' => 'Perempuan'
     ];
        $data['users'] = $users;
        $data['genders'] = $genders;

        //play form phalcon, untuk lebih jelasnya akan dijelaskan pada bab crud
        $form = new Form();
        $name = new Text("name", array('placeholder' => 'Type your name'));
        $name->setLabel('Nama user');
        $form->add($name);
        // dd($data);
     $this->view->data = $data;
        $this->view->form = $form;
     $this->view->title = "Phalcon - User";
    }
}

Kemudian, buat file view test.volt pada path app/views/test/ dan isikan code berikut,
{% extends 'layouts/default1.volt' %}

{% block content %}
 <br>
 <div class="row">
  <div class="col-md-12">
   Hello codedoct!!!
   <br>
   users:
   {% if (data['users']) %}
    <ul>
     {% for user in data['users'] %}
      <li>{{user}}</li>
     {% endfor %}
    </ul>
   {% endif %}
  </div>
 </div>

 <div class="row">
  <div class="col-md-12">
   gender:
   <ul>
    {% for key, value in data['genders'] %}
     <li>{{value}}</li>
    {% endfor %}
   </ul>
  </div>
 </div>
 <br>
 <h5>Yang atas menggunakan form phalcon yang bawah menggunakan form biasa</h5>
 <div class="row">
  <div class="col-md-12">
   {{ form.label('name') }}
   {{ form.render('name', ['class':'form-control']) }}
   <br>
  </div>
 </div>
 <div class="row">
  <div class="col-md-12">
   <label>Nama user</label>
   <input type="text" name="name" class="form-control" placeholder="Type your name">
  </div> 
 </div>
 
{% endblock %}

Untuk mengetestnya buka url project phalcon kita dan arahkan pada route test, sehingga akan tampak seperti gambar dibawah ini,


Silahkan dipelajari sendiri syntax-syntaxnya, hehe..

===DONE!===

Phalcon - Add ENV and function dd


Pada tutorial kemarin kita sudah membuat koneksi database pada phalcon dan instalasi composer, tutorial kali ini kita akan menambahkan file .env dan instalasi debuger pada phalcon.

Oke, langsung saja kita mulai experimentnya.
Pertama, edit file config.php pada path app/config/ menjadi seperti ini,
<?php
/*
 * Modified: prepend directory path of current file, because of this file own different ENV under between Apache and command line.
 * NOTE: please remove this comment.
 */
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');
// defined('BASE_URL');

if (!function_exists('env')) {
    /**
     * Load start
     */
    include_once APP_PATH . "/config/start.php";
}

return new \Phalcon\Config([
    'database' => [
        'adapter'     => 'Mysql',
        'host'        => env('DB_HOST'),
        'username'    => env('DB_USER'),
        'password'    => env('DB_PASS'),
        'dbname'      => env('DB_NAME'),
        'charset'     => 'utf8',
    ],
    'application' => [
        'appDir'         => APP_PATH . '/',
        'controllersDir' => APP_PATH . '/controllers/',
        'modelsDir'      => APP_PATH . '/models/',
        'migrationsDir'  => APP_PATH . '/migrations/',
        'viewsDir'       => APP_PATH . '/views/',
        'pluginsDir'     => APP_PATH . '/plugins/',
        'libraryDir'     => APP_PATH . '/library/',
        'cacheDir'       => BASE_PATH . '/cache/',

        // This allows the baseUri to be understand project paths that are not in the root directory
        // of the webpspace.  This will break if the public/index.php entry point is moved or
        // possibly if the web server rewrite rules are changed. This can also be set to a static path.
        'baseUri'        => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]),
    ]
]);

Setelah itu, edit file composer.json pada path root menjadi seperti ini,
{
 "name": "codedoct",
 "type": "project",
 "authors": [
        {
            "name": "Mihawk"
        }
    ],
 "require": {
  "guzzlehttp/guzzle": "~6.0"
 },
 "require-dev": {
        "symfony/var-dumper": "2.7.*",
        "vlucas/phpdotenv": "~2.0"
    }
}
Pada code composer diatas kita menbahkan plugin untuk env dan debuger.

Selanjutnya, buat file start.php pada path app/config/ dan isikan code berikut,
<?php
/**
 * Start loader configuration
 */

// Use composer autoloader to load vendor classes
require_once BASE_PATH . '/vendor/autoload.php';

/**
 * Environment variables
 */
$dotenv = new Dotenv\Dotenv(BASE_PATH . '/');
$dotenv->load();

/**
 * Include helpers
 */
include_once BASE_PATH . '/helpers.php';

/*
 * Debug
 */
if (env('APP_ENV') == 'dev') {
    $debug = new \Phalcon\Debug();
    $debug->listen();
}
Dapat dilihat dari code start diatas, kita menambahkan path vendor yang sudah kita build pada tutorial sebelumnya.

Kemudian buat file helpers.php pada path root dan isikan code berikut,
<?php

/**
 * Get .env value and return second parameter as default value
 */
function env($name, $default = null)
{
    return (getenv($name)) ?: $default;
}

/**
 * Current shortcode only available on dev env
 */
if (env('APP_ENV') == 'dev')
{
    /**
     * Simple function for better debugging view
     */
    class Dumper
    {
        /**
         * Dump a value with elegance.
         *
         * @param  mixed  $value
         * @return void
         */
        public function dump($value)
        {
            $dumper = 'cli' === PHP_SAPI ? new \Symfony\Component\VarDumper\Dumper\CliDumper : new \Symfony\Component\VarDumper\Dumper\HtmlDumper;
            $dumper->dump((new \Symfony\Component\VarDumper\Cloner\VarCloner)->cloneVar($value));
        }
    }

    if (!function_exists('dd')) {
        /**
         * Dump the passed variables and end the script.
         *
         * @param  mixed
         * @return void
         */
        function dd()
        {
            array_map(function ($x) {
                (new Dumper)->dump($x);
            }, func_get_args());
            die(1);
        }
    }
}
Dapat dilihat dari code helpers diatas kita menambahkan function dd yang akan digunakan untuk mendebug code.

Terakhir buat file .env pada path root dan isikan code berkut,
APP_ENV="dev"

DB_HOST="localhost"
DB_USER="root"
DB_PASS="root"
DB_NAME="phalcon-experiment_312"

Sehingga struktur file yang baru akan tampak seperti ini,


===DONE!===

Phalcon - Koneksi database dan add vendor


Pada tutorial kali ini kita akan melanjutkan project phalcon yang sebelumnya sudah sampai pada tutorial restruktur phalcon view.

Tutorial kali ini akan membahas tentang membuat koneksi database pada phalcon dan instalasi vendor, oke langsung saja kita mulai experimentnya.

Sebelum membuat koneksi database, buat databasenya terlebih dahulu pada phpmyadmin seperti pada tutorial berikut,

Jika database sudah dibuat, selanjutnya kita akan membuat koneksi database terlebih dahulu, caranya buka file config pada path /app/config/ dan edit bagian database menjadi seperti ini,
'database' => [
    'adapter'     => 'Mysql',
    'host'        => 'localhost',
    'username'    => 'root',
    'password'    => 'rahasia',
    'dbname'      => 'codedoct_phalcon',
    'charset'     => 'utf8',
],

Untuk mengetesnya buka terminal, masuk kedirectory project dan sesuaikan username, password, dan database name pada mysql  
$phalcon migration run

Sehingga akan muncul tampilan seperti pada gambar dbawah,


Jika muncul seperti pada gambar dibawah, berarti username atau password atau dbname salah di masukan.


Selanjutnya instalasi composer bisa lihat disini, jika sudah buat file composer.json pada project phalcon, dan isikan code berikut,
{
 "name": "codedoct",
 "type": "project",
 "authors": [
            {
               "name": "Mihawk"
            }
        ],
 "require": {
  "guzzlehttp/guzzle": "~6.0"
 }
}

Composer akan membuat folder baru bernama vendor dan file composer.lock sehingga akan tampak seperti gambar dibawah strukturnya,



===DONE!===

Phalcon - Restruktur volt


Tutorial kemarin kita sudah mempelajari rules atau cara kerja route-controller-view pada phalcon, sekarang kita akan mempelajari struktur volt sehingga lebih struktural, oke langsung saja kita mulai experimentnya,

Pertama, buka halaman users yang sudah kita buat sebelumnya pada browser sehingga akan tampak gambar seperti ini,


Pada gambar diatas dapat dilihat ada margin kiri pada text "Hello codedoct!!!" sedangkan pada halaman read.volt kita hanya menambahkan code ini,


Adanya margin tersebut dikarenakan pada phalcon secara default setiap akan request halaman, halaman akan memanggil halaman /app/views/index.volt sebagai deafultnya, untuk memudahkan development dengan multi layouts kita akan ubah code index.volt pada path /app/views/ menjadi seperti ini,
{{ content() }}

Kemudian, pada path /app/views/layouts/ tambahkan file default1.volt dan isikan code berikut,
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
        <title>{{ title ? title|e|striptags : 'Untitled' }}</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            {% block content %}
            {% endblock %}
        </div>
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <!-- Latest compiled and minified JavaScript -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </body>
</html>
Pada code diatas kita sudah menambahkan condition untuk menampilkan title maka pada UserController.volt pada path /app/controllers/ kita ubah codenya menjadi seperti ini,
<?php

class UserController extends ControllerBase
{
    public function readAction()
    {
     $this->view->title = "Phalcon - User";
    }
}

Terakhir ubah code file read.volt pada path /app/views/user/ menjadi seperti ini,
{% extends 'layouts/default1.volt' %}

{% block content %}
 <br/>
 Hello codedoct!!!
{% endblock %}

Dapat dilihat pada code diatas, kita meng-extends halaman read.volt pada halaman default1.volt sehingga akan tampak seperti pada gambar dibawah,


===DONE!===
   

Phalcon - Routes, controller, view


Kembali lagi ditutorial phalcon,

Pada tutorial kemarin kita sudah membuat sebuah project phalcon dan mensetupnya agar bisa di akses di local kita, kali ini codedoct akan membagikan tutorial tentang pemahaman route, controller, dan view pada phalcon.

Oke langsung saja kita mulai tutorialnya, dalam experiment kali ini kita akan membuat halaman untuk users,
Pertama, buat terlebih dahulu route yang akan mengarahkan ke controller UserController dengan mengedit code route.php pada path /app/config/ menjadi seperti ini,
<?php

$router = $di->getRouter();

// Define your routes here
/**
 * Get user lists data by query
 */
$router->addGet(
    "/users",
    [
        "controller"        => "user",
        "action"            => "read"
    ]
);


$router->handle();

Selanjutnya, buat file controller baru dengan nama UserController.php pada path /app/controllers/ isikan code berikut,
<?php

class UserController extends ControllerBase
{
    public function readAction()
    {
     $this->view;
    }
}

Terakhir, buat file view/volt baru dengan nama read.volt pada path /app/views/user dan isikan code berikut,
<br/>
Hello codedoct!!!

Sehinnga saat kita browse url project akan menampilkan tampilan seperti ini,



===DONE!===

Phalcon - Create project (ubuntu)


Hello codedocters, pada tutorial kali ini kita akan melanjutkan tutorial phalcon. Sebelumnya kita sudah  menginstall phalcon pada ubuntu kita, kali ini kita akan memulai membuat sebuah project phalcon sekaligus perkenalan pada salah satu framework PHP yang relatif masih baru ini.

Oke, kita mulai saja experiment phalconnya..

Pertama, buat project phalconnya terlebih dahulu dengan cara,
phalcon create-project phalcon-experiment_3_1_2

Berikut struktur directory phalcon,


Jika project sudah dibuat coba browse url pada localhost, jika terjadi error pada cache tinggal beri full akses saja folder cachenya. caranya,
cd (name_project)
sudo chmod -R 777 cache

Jangan lupa beri fullakses pada apache kalian dengan cara buka file 000-default.conf pada path /etc/apache2/site-available/ dan tambahkan code berikut,


Terakhir restart apache dengan cara,
sudo service apache2 restart

Buka browser, sehingga tampilannya akan tampak seperti ini,
 

===DONE!===

How to - Install phalcon


Tidak terasa sudah lebih dari 2 minggu tidak menulis blog karena sibuk pindah kantor dan pindah rumah, akhirnya bisa kembali bereksperiment,

Kali ini codedoct akan memberikan tutorial cara instalasi phalcon pada ubuntu 16.04. Phalcon sendiri merupakan framework php yang menurut saya memiliki struktur directory yang sangat sederhana bila dibandingkan dengan framework lain.

Oke kita langsung saja mulai tutorialnya,
Pertama, pastikan ubuntu kalian sudah terinstall LAMP cara installnya bisa lihat disini,

Selanjutnya, silahkan ketikan perintah berikut satu-persatu pada terminal,
cd /var/www/html
mkdir phalcon
cd phalcon

sudo apt-get install -y php7.0-fpm \
     php7.0-cli \
     php7.0-curl \
     php7.0-gd \
     php7.0-intl \
 php7.0-pgsql \
 php7.0-mbstring \
 php7.0-xml \
 php7.0-bcmath \
 php-msgpack \
 curl \
 vim \
 wget \
 git

sudo apt-add-repository ppa:phalcon/stable
sudo apt-get update
sudo apt-get install php7.0-phalcon
sudo apt-get install -y gcc make re2c libpcre3-dev php7.0-dev build-essential php7.0-zip

sudo apt-get install gcc make autoconf libc-dev pkg-config
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo PATH=/opt/sp/php7.0/bin:$PATH ./install

php -i | grep Loaded //untuk melihat path php7.0
sudo bash -c "echo extension=phalcon.so > /etc/php/7.0/cli/conf.d/phalcon.ini"
sudo service php7.0-fpm restart

Untuk mengetes apakah phalcon sudah terinstall dengan baik atau belum silahkan buat file phpinfo.php pada directory /var/www/html kemudian isikan code php berikut,
<?php phpinfo(); ?>

Setelah itu buka browser dan masukan url localhost/phpinfo.php maka saat kita cari phalcon akan muncul seperti ini,


Kemudian install phalcon devtools agar kita bisa menggunakan tools yang ada pada phalcon, cara instalasinya seperti ini,
cd /var/www/html/phalcon
git clone https://github.com/phalcon/phalcon-devtools.git
ln -s /var/www/html/phalcon/phalcon-devtools/phalcon.php /usr/local/bin/phalcon
chmod +x /usr/local/bin/phalcon

Terakhir test phalcon, ketikan printah berikut pada terminal,
cd
phalcon

Sehingga akan muncul seperti ini,


===DONE!===