Yii2 install And Setup

เริ่มแรกในการใช้งาน Yii version 2 โดย Installing จาก Composer บน mac

เราจะเริ่มต้นจาก install Composer กันก่อนโดยใช้ command

sudo curl -s http://getcomposer.org/installer | sudo php
sudo mv composer.phar /usr/local/bin/composer

หลังจากนี้เราจะได้ composer เอาไว้ใช้งานแล้ว

จากนั้นให้เราไปที่ folder ที่เราจะใช้เริ่ม project

cd /Applications/MAMP/htdocs

ถ้าต้องการ Create project แบบ Basic

cd ~/Sites
composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

โดยถ้าใช้แบบ Basic จะจบที่ขั้นตอนนี้ สามารถทดสอบได้ที่

http://localhost/basic/web/index.php

หรือ Create project แบบ Advanced

cd ~/Sites
composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application

 

เมื่อสิ้นสุดการ Create project แบบ Advanced ขั้นตอนต่อไปจะเป็นการ Setup และ ตั้งค่าต่างๆ ของ project

  1. Execute “init” command จาก path project ของเรา
    php /path/to/yii-application/init

    หรืออีกแบบ, ในแบบ production execute init ใน non-interactive mode.

    php /path/to/yii-application/init --env=Production --overwrite=All
  2. ให้ไปสร้าง database ใหม่และเข้าไปตั้งค่า components.db ที่ไฟล์ common/config/main-local.php
  3. ย้ายข้อมูลเข้าไปใน database โดยใช้ command yii migrate.
    php yii migrate

    ในกรณีที่ใช้ MAMP และเกิดปัญหาให้กำหนดค่า common/config/main-local.php ตามนี้

    'components' => [
    'db' => [
    'class' => 'yiidbConnection',
    'dsn' => 'mysql:host=localhost;port=8889;dbname=mydbname;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
    'username' => 'myuser',
    'password' => 'mypassword',
    'charset' => 'utf8',
    ],
  4. ตั้งค่า document roots ที่ web server ตามนี้(หรือตามสะดวก)
    สำรับ frontend จาก /path/to/yii-application/frontend/web/ และใช้ URL http://frontend/
    สำรับ backend จาก /path/to/yii-application/backend/web/ และใช้ URL http://backend/

ในการ Login application ในครั้งแรกคุณต้อง sign up ข้อมูลพวกนี้ก่อน email address, username และ password หลังจากนั้นคุณจึง login เข้าไปใน application ได้ โดยใช้ email address และ password ในการ login

โครงสร้างไดเรกทอรี

ไดเรกทอรีรากมีไดเรกทอรีย่อยต่อไปนี้:

  • backend – backend web application.
  • common – files common to all applications.
  • console – console application.
  • environments – environment configs.
  • frontend – frontend web application.

อย่างอื่นไปอ่านเองได้ที่ http://www.yiiframework.com/doc-2.0/guide-tutorial-advanced-app.html

ตั้งค่า mod_rewrite ให้กับ yii2

สำหรับ Config

'components' => [
//...
  'urlManager' => [
          'showScriptName' => false,
          'enablePrettyUrl' => true
                  ],    
//...
'request' => [

สำหรับ .htaccess เอาไว้ใน /web

RewriteEngine on
 
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php

 

อีกตัวอย่างที่น่าสนใจ http://aaronfrancis.com/blog/2014/1/9/hosting-an-advanced-yii2-application-on-heroku

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
</IfModule>

<IfModule mod_rewrite.c>
    # deal with admin first
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
    RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^.*$ backend/web/index.php [L]


    RewriteCond %{REQUEST_URI} ^/(assets|css)
    RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
    RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
    RewriteCond %{REQUEST_URI} !index.php
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ frontend/web/index.php
</IfModule>

อันนี้ก็น่าสนใจ http://www.yiiframework.com/wiki/755/how-to-hide-frontend-web-in-url-addresses-on-apache/

Unity3D and GUIStyle

You can create a GUIStyle by simply declaring a variable at the top of your script which when the script (component) is selected, you can go to the Properties panel and modify the style that way. Unity3d Docs GUIStyle

GUIStyle myStyle;

You can also create a GUISkin and modify the values through the skin as well. Unity3d Docs GUISkin

OR .. you can change the alignment on the individual reference of your label (or button, etc ..) directly through the code below. Be aware though, that once you change the Alignment property, it stays changed for EVERY Other label (or button, etc ..) reference. The way to change just one item would be to follow the code below: (change style, create GUI element, change style back to original state)

GUI.skin.label.alignment = TextAnchor.MiddleLeft;
GUI.Label(Rect(10,10,200,400),"My Text");
GUI.skin.label.alignment = TextAnchor.MiddleCenter;

Below are the possible Text Alignment options. If you want to change the alignment for a button instead of a label, just change the word “label” for whatever default style it is that you want to change.

GUI.skin.label.alignment = TextAnchor.MiddleLeft;
GUI.skin.label.alignment = TextAnchor.MiddleRight;
GUI.skin.label.alignment = TextAnchor.MiddleCenter;
GUI.skin.label.alignment = TextAnchor.LowerCenter
GUI.skin.label.alignment = TextAnchor.LowerLeft
GUI.skin.label.alignment = TextAnchor.LowerRight
GUI.skin.label.alignment = TextAnchor.UpperCenter
GUI.skin.label.alignment = TextAnchor.UpperLeft
GUI.skin.label.alignment = TextAnchor.UpperRight