2014年6月30日 星期一

yii framework - [UI] 如何變更CGridView的檢視、修改、刪除icon及超連結?

先來看段code:

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'name',
'phone',
array(
'class'=>'CButtonColumn',
'template'=>'{lookMyDetail} {justUpdate} {deleteMe}',
'buttons'=>array
(
'lookMyDetail' => array
(
'label'=>'來看我的一切秘密吧',
'imageUrl'=>Yii::app()->request->baseUrl . '/images/icons/view.png',
'url'=>'Yii::app()->createUrl("user/detail", array("id"=>$data->id))',
),
'justUpdate' => array
(
'label'=>'就是要改怎樣?',
'imageUrl'=>Yii::app()->request->baseUrl . '/images/icons/update.png',
'url'=>'Yii::app()->createUrl("user/adminUpdate", array("id"=>$data->id))',
),
'deleteMe' => array
(
'label'=>'刪掉我的記憶',
'imageUrl'=>Yii::app()->request->baseUrl . '/images/icons/delete.png',
'url'=>'Yii::app()->createUrl("user/delete", array("id"=>$data->id))',
),
),
),
),
));
?>

紅色字就是特別要注意的地方!

1. 首先columns是你要顯示的欄位
2. CButtonColumn就是為了後面的按鈕所呼叫的class
3. template非常重要!! 這裡預設是{view} {update} {delete}, 分別代表三個按鈕的順序及超連結目標.

例如:

如果我只想要刪除、修改的話, 那就是 {delete} {update}, 這樣就不會有檢視 (view的圖案跟連結), 而且順序也改變了!

再進階點:

那就是如上面的例子, 透過設置buttons的array參數來添加
1. 滑鼠移過去時的文字提示 (label)
2. 圖示 (imageUrl)
3. 超連結的網址 (url)

這樣就可以符合我們的基本需求了吧^^ 來睡嘍~

yii framework - [UI] 如何修改CListView的id連結?

一般我們會在view裡看到這段code

<?php $this->widget('zii.widgets.CListView', array(
'dataProvider' => $dataProvider,
'itemView' => '_view',
)); ?>

然後我們會看到一個把db"部分"資料列出來的表格, 第一欄的id預設的超連結是xxx/view

但是我要改成detail要怎麼改呢?

本來以為要改變id的超連結要設定CListView的參數, 但是查半天都沒看到...

最後原來要修改的東西是在_view.php這個檔案裡...暈

<b><?php echo CHtml::encode($data->getAttributeLabel('bnbId')); ?>:</b>
<?php echo CHtml::link(CHtml::encode($data->bnbId), array('view', 'id'=>$data->bnbId)); ?>
<br />

view改成detail就搞定了!! 就這麼簡單...睡覺去zzzz

2014年6月24日 星期二

yii framework - [UI] 按鈕超連結設定linkButton、CJuiButton

如果要單純生成一個具有超連結功能的按鈕, 並且可以傳值, 有幾種方式:

這是常用的兩種 linkButtonCJuiButton

CHtml::linkButton('變更', array(
'submit'=>array('food/update', 'id'=>$model->id)
));

$this->widget('zii.widgets.jui.CJuiButton', array(
'buttonType'=>'link',
'name'=>'update',
'caption'=>'變更',
'url'=>array('food', 'id'=>$model->id),
));

linkButton (官方說明)
會生成一個一般的超連結, 不過他並不會大剌剌的將你的參數跟值秀出來
(ex: index.php?r=food/update&id=xxxxx)

CJuiButton (官方說明)
由於這是yii封裝了jQueryui, 所以它會生成一個很漂亮的按鈕樣式, 並且提供許多實用的功能
不過他大剌剌的將你的參數跟值秀出來


CHtml提供了一般前端會需要的一些東西, 例如:
tag、textArea、form、button、radio....等

而CJuiWidget則封裝了jQueryui, 所以jQueryui的東西都可以直接用, 真的是很方便

2014年6月20日 星期五

yii framework - 分頁功能要怎麼做? 運用CPagination+CLinkPager

分頁是一個網站的常見功能, 所以勢必要學會如何使用! 那我們開始吧!


首先是Controller的部分:
function actionIndex(){
    $criteria = new CDbCriteria();
    $count=Article::model()->count($criteria);
    $pages=new CPagination($count);

    $pages->pageSize=10;
    $pages->applyLimit($criteria);
    $models = Post::model()->findAll($criteria);

    $this->render('index', array(
    'models' => $models,
         'pages' => $pages
    ));
}

說明:
1. CDbCriteria把你要抓的資料條件都設好 ( 查詢資料大解密之"CDbCriteria到底是什麼? )
2. count得到符合條件的資料筆數
3. 把得到的資料筆數丟到CPagination
4. pageSize設定每個分頁要顯示幾筆
5. applyLimit 設定SQL的limit跟offset, 來得到當下選擇的分頁資料 ( 官方的applyLimit-detail說明 )
6. 將$pages渲染 (render)到view去

2014年6月12日 星期四

Swift-中文導覽手冊

相信很多人都在Apple的WWDC 2014看到這個新語言, 並且躍躍欲試.
但是官方的文件是英文的阿! 雖然說身為一位程式設計師要有一定的讀英文能力啦~
不過如果有中文版的勢必會加速大家在新語言的學習速度阿!
小第剛好爬到由許多大大共同完成的Swift中文版, 並公開分享 (實在偉大)


下面就是Swift的中文版導覽手冊:

https://www.gitbook.com/book/tommy60703/swift-language-traditional-chinese/details