2017年8月27日 星期日

[Yii2]AR類裡面方法的生命週期


這太關鍵了!可讓你知道在寫業務邏輯時應該重寫哪個方法


資料來源:http://v.youku.com/v_show/id_XMTczODc4MTkyNA==.html?spm=a2h0j.8191423.playlist_content.5!5~5~5~A&&f=27646188&from=y1.2-3.4.5

2016年5月22日 星期日

[Yii2] [error] SQLSTATE[HY000] [2002] No such file or directory如何解決?

環境:OSX、XAMPP 7.0.6、Yii 2.0.8




1. 打開終端機輸入以下指令:

sudo mkdir /var/mysql
cd /var/mysql
sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock


2. 進到你的yii2專案資料夾, 並使用yii2的migrate指令建立預設會員table:

cd /Applications/XAMPP/xamppfiles/htdocs/www
php yii migrate

就會看到這個畫面就表示搞定了!!











2016年5月17日 星期二

[Yii2] 如何透過Gii在yii2 advanced建立CRUD?

1. 建立一個table, 例如 :



















2. 進到gii裡面選擇Model Generator, 填入下面資料.

ps: 注意Namespace
















3. 進入CRUD Generator.

ps: 如果是用basic版本就把frontend改成app. advanced就看你這model跟CRUD要建在前端(frontend)還是後端(backend).


4. 看看成果吧!網址指向index.php?r=posts/index看看吧~








































2016年5月9日 星期一

[Yii2] 在MAC OSX使用composer安裝Yii2 advanced, 使用XAMPP做本機開發環境

1. 下載並安裝XAMPP (https://www.apachefriends.org/zh_tw/download.html

2. 進入XAMPP預設根目錄, 打開終端機輸入cd /Applications/XAMPP/htdocs/

3. 下載composer, 輸入curl -sS https://getcomposer.org/installer | php

4. 讓之後可以直接使用指令 - “composer”, 而不是php composer.phar
    - 我們先創一個目錄, 輸入sudo mkdir -p /usr/local/bin
    - 把檔案搬過去, 輸入sudo mv composer.phar /usr/local/bin/composer

5. 更新一下composer, 輸入composer self-update

6. 安裝composer套件, 輸入composer global require "fxp/composer-asset-plugin:~1.1.1"

7. 下載並安裝yii, 輸入composer create-project --prefer-dist yiisoft/yii2-app-advanced [專案名稱]
ps: 過程中可能要你提供github的token, 就登入github, 進到個人設定頁面的Personal access tokens, 設定你要給這個token什麼權限, 這邊我是預設全部. (查看附件)

8. 用終端機進到專案目錄後輸入php init, 會出現以下畫面:
Which environment do you want the application to be initialized in?
  [0] Development
  [1] Production
  Your choice [0-1, or "q" to quit]

選擇dev (因為目前是在開發階段)


然後他會問你Initialize the application under 'Development' environment? [yes|no], 就y就好

9. 更新yii內建的套件, 輸入composer update




參考資料:
1. http://www.iosone.com/site/detail?id=50
2. http://getcomposer.ycnets.com/doc/00-intro.md

2015年6月16日 星期二

yii 取得指定條件資料的數量

簡單又好用~

$criteria = new CDbCriteria;
$criteria->compare('sex', 'M'); <-中間用你想篩選的條件
$count = Member::model()->count($criteria);

2015年6月13日 星期六

yii 如何分享到自己facebook動態牆上? (不用fb鬼審核)


facebook關於這個的說明放的位置實在很隱晦阿....官方說明
ok~ 可以看到分享的參數非常多阿!
為了可以讓整個code更好運用, 我們可以運用小方法, 就是php的http_build_query

public function share($shareData)
{
 $url = 'https://www.facebook.com/dialog/feed?';

 $params = array(
  'app_id' => '你的App Id',
  'display' => 'popup',
  'caption' => 'COPY BY Joker',
  'link' => $shareData['link'],
  'name' => $shareData['title'],
  'description' => $shareData['content'],
  'picture' => $shareData['img'],
  'redirect_uri' => $shareData['redirectUri'],
 );
 return $url.http_build_query($params);
}
參數說明:
name: 標題
caption: 子標題
description: 描述
link: 標題連結的網址
picture: 圖片網址
redirect_uri: 分享後跳轉的網址 (如果你要確認有沒有分享成功就可以key你驗證用的程式網址)

顯示的位置如下:
fb_share
使用方法如下:
$shareData = array(
 'link' => 'http://joker.stunning.tw/',
 'title' => '薯條好好吃',
 'content' => '這就是我手key的內容',
 'img' => 'http://test.com/',
 'redirect_uri' => 'http://test.com/index.php?r=social/facebook/ShareCheck,
);

$shareUrl = $this->share($shareData);
$this->redirect($shareUrl);

2015年3月5日 星期四

yii 如何一次更新多筆資料? (使用updateAll)


看一下官方的介紹:













attributes (屬性):更新的值. 格式為 array('欄位名'=>要更新的值)
condition (條件):篩選的條件.
params (參數):篩選的值

範例:
Food::model()>updateAll(array('status'=>1),'expire_time>=:expire_time',array(':expire_time'=>$expireTime));

範例解釋:
1. 先把到期跟過期的食物抓出來
2. 將符合的資料裡面的狀態改為1

參考資料:
updateAll-detail
YII Model-數據庫操作 CActiveRecord之UPDATE