<?php
class RTypeController extends Controller
{
/**
* @var string the default layout for the views. Defaults to '//layouts/column2', meaning
* using two-column layout. See 'protected/views/layouts/column2.php'.
*/
public $layout='//layouts/column2';
/* ImageLink open Popup FancyBox */
public static function imgFancy($targetID,$path){
if($path!=''){
// ทำไมใช้ $this-> แทน RTypeController:: ไม่ได้
$link = RTypeController::fancyLink_img($targetID, $path);
$link .= RTypeController::fancyContent_img($targetID, $path);
}else $link='no image';
return $link;
}
/* Link open FancyBox */
public static function fancyLink_img($targetID,$path){
if($path!=''){
$image = CHtml::image($path,NULL,array("class"=>"fancy-thumb"));
$link = CHtml::link($image, '#'.$targetID,array("class"=>"fancy-click"));
}else $link='no image';
return $link;
}
/* Content in FancyBox */
public static function fancyContent_img($targetID,$path){
if($path!=''){
$image = CHtml::image($path,NULL,array('id'=>$targetID,"class"=>"fancy-content"));
}else $image='no image';
return $image;
}
public function render_RTypeNum($data,$row){
// Find the number of "RTypeID" RDetail:
// SELECT COUNT(*) FROM h_rdetail WHERE RTypeID= $data->RTypeID
$criteria = new CDbCriteria();
$criteria->condition = 'RTypeID='.$data->RTypeID;
$count = RDetail::model()->count($criteria);
return $data->RTypeName." ($count) ";
}
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
'postOnly + delete', // we only allow deletion via POST request
);
}
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view'),
'users'=>array('*'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update'),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete'),
'users'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
/**
* Lists all models.
*/
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('RType');
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
/**
* Manages all models.
*/
public function actionAdmin()
{
$model=new RType('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['RType']))
$model->attributes=$_GET['RType'];
$this->render('admin',array(
'model'=>$model,
));
}
public function loadModel($id)
{
$model=RType::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='rtype-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
}
อ๋อ ขอโทษด้วยครับ เป็นผมอ่านแล้วเข้าใจผิดเอาเอง
"ซึ่ง $this จะสามารถใช้ได้ใน body ของ function ที่ไม่ใช่ static เท่านั้น"
ผมไปเข้าใจแยกกันเป็นว่า $this จะสามารถใช้ได้ใน body ของ function และ function ที่เรียกใช้ต้องไม่ใช่ static
ตอนนี้เข้าใจแล้วว่า "$this ต้องเรียกจากใน body ของ function ซึ่งฟังก์ชั่นที่เรียกและถูกเรียกทั้ง 2 ตัวต้องไม่ใช่ static function"
ขอบคุณมากๆครับที่พยายามอธิบาย