Php 包含CDATA列-如何与yii正确使用require\u一次
我试图在CGridView中使用yii扩展数据列。但是,我可能会遇到一个错误,错误地使用require_一次,或者错误地使用DataColumn作为一个整体 为了便于参考,我将DataColumn.php包含在yii中受保护的组件文件夹中Php 包含CDATA列-如何与yii正确使用require\u一次,php,yii,Php,Yii,我试图在CGridView中使用yii扩展数据列。但是,我可能会遇到一个错误,错误地使用require_一次,或者错误地使用DataColumn作为一个整体 为了便于参考,我将DataColumn.php包含在yii中受保护的组件文件夹中 require_once(Yii::app()->basePath . '/components/DataColumn.php'); 数据列如下所示 class DataColumn extends CDataColumn { /**
require_once(Yii::app()->basePath . '/components/DataColumn.php');
数据列如下所示
class DataColumn extends CDataColumn
{
/**
* @var boolean whether the htmlOptions values should be evaluated.
*/
public $evaluateHtmlOptions = false;
/*
...
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'account-grid',
'dataProvider'=>$dataProvider,
'filter'=>$model,
'columns'=>array(
'name',
'mobile_comp',
'msisdn',
// this formats the balance
array(
'class'=>'DataColumn'
'header'=>'Balance (Rwf)',
'name'=>'balance',
'evaluateHtmlOptions'=>true,
'htmlOptions'=>array('id'=>'balance'),
'value'=>function($data){
return number_format($data->balance);
},
),
/*
'company',
*/
array(
'class'=>'CButtonColumn',
'template'=>'{manage}',
'buttons'=>array
(
'manage' => array
(
'label'=>'Manage',
'url'=>'Yii::app()->createUrl("account/view", array("id"=>$data->id))'
),
),
),
)));
?>
然而,有了这个include和这个DataColumn,我遇到了错误
include(CDataColumn.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory
您不必单独包含
DataColumn
。由于您已将其放在Components文件夹中,Yii将自动导入它,但是,在向GridView添加新列时,确实需要引用完整的类路径别名,如下所示
<?php $this->widget('zii.widgets.CGridView',array(
....
....
'columns'=>array(
array(
class'=>'application.components.DataColumn'
...
)
);
您如何在网格视图中调用DataColumn?我像soto Clearify一样调用它,当您执行类似“application.components.DataColumn”的操作时—这已经假设您处于受保护状态?或者它如何从这里知道正确的路径?正如您所知,yii 1.x不使用名称空间,因此别名使用“点语法”应用程序(即受保护的目录)是一个根别名以及webroot(index.php所在)、ext(扩展)、system(framework)等,请参阅完整的infoThans Manquer!在这个上下文中,名称空间是什么意思?我指的是仅在通常上下文中的名称空间,当您引用DataColumn
时,Yii(即php)应该清楚地知道调用哪个类(文件),在Yii 2.x中,所有内容都是名称空间的,因此您将有一个像use-app\components\DataColumn代码>,并正常引用该类,因为在Yii 1.x中,您不能这样做,您必须使用别名来扩展Yii 1.x,因为大多数主机/发行版至少在5.4/5(Yii 2.x要求>=5.4)上,所以它设计为在没有名称空间的情况下使用,以支持PHP的较低版本,Yii实现了最近发布的PHP的OOP特性