1111111111111


เว็บใหม่ที่ผมขอใช้ฟรีครับ ภาวนาอยู่ว่าวันดีคืนดีข้อมูลคงไม่หายเหมือนเว็บอื่น
แสดงบทความที่มีป้ายกำกับ ํYii Framework แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ ํYii Framework แสดงบทความทั้งหมด

วันเสาร์ที่ 19 กุมภาพันธ์ พ.ศ. 2554

การเรียกใช้เมนูตามสิทธิที่ได้ (ช่วงนี้เมืองไทยเรียกร้องสิทธิกันบ่อยต้องอินเทรนหน่อย)

การเรียกใช้เมนูตามสิทธิที่ได้ หมายถึงแสดงเมนูตามที่สิทธิของ user นั้นๆมี

ทบทวนกันหน่อย การกำหนดการเข้าใช้งาน Action ต่างๆกำหนดที่ Controller ถูกใหมครับ เช่น


class ReservationController extends Controller{
.....
.....
public function accessRules(){
return array(
array('allow',
'actions'=>array('view','create','update','index','print','report','department'),
'users'=>array('admin'),
),
array('allow',
'actions'=>array('view','index','email'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
.....
.....
}


ด้านบนเป็นการกำหนดสิทธิการเข้าถึงหรือเข้าใช้งาน ถูกใหมครับ
'users'=>array('admin'), หมายถึงเฉพาะ admin
'users'=>array('@'), หมายถึงเฉพาะผู้ที่ login
'users'=>array('*'), หมายถึงใครก็ได้
จาก code ด้านบน

array('allow',
'actions'=>array('view','create','update','index','print','report','department'),
'users'=>array('admin'),
),


หมายถึง อนุญาติ (allow) ให้เฉพาะ admin เท่านั้นที่ 'view','create','update','index','print','report','department'

แต่ปัญหาที่ผมเจอคือเวลาแสดงใน view จะมีเมนูสำหรับ admin ทั้งๆที่ไช่ admin จึงได้ไปปรึกษาอิคคิวซังได้ผลมาดังนี้


การกำหนดเมนูโดยแสดงตามสิทธิของ user ขอย้ำว่าเป็นสว่นของเมนู



พอดีไปเจอมา การใส่ปุ่มใน Grid ครับ

การกำหนดปุ่มเราต้องกำหนดในส่วนของ CButtonColumn
และเมื่อมาดูที่ 'template'=>'{view} {update} {delete} {newjob}', ถ้าหากว่าอยากสร้างปุ่มของตนเองเพิ่มเช่น ปุ่ม newjob




array(
'class'=>'CButtonColumn',
'template'=>'{view} {update} {delete} {newjob}', //ขั้นตอนที่ 1. กำหนด {newjob}
'header'=>'Actions',
'buttons'=>array('newjob' => array(
'label'=>'New Job',
'url'=>'Yii::app()->createUrl("job/create",array("clientid"=>$data->id))',
'imageUrl'=>Yii::app()->request->baseUrl.'/images/job.png',
),
),
'htmlOptions'=>array('width'=>75),

),