如何在 web-app 中使用 Yii 组件?

Posted

技术标签:

【中文标题】如何在 web-app 中使用 Yii 组件?【英文标题】:How to use Yii components in the web-app? 【发布时间】:2014-05-27 07:38:58 【问题描述】:

我编写了位于/protected/components/document.php的测试组件:

class Document extends CComponent
    private $_width;
    public __construct($width)
        this->_width=$width;
    
    public function getWidth()
        return $this->_width;
    

现在我正在尝试在我的控制器操作之一中使用此组件,如下所示:

$docum=new Document('150');
echo $docum->width;

但是引发了以下异常:

include(Document.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory 

如何解决这个问题?

【问题讨论】:

【参考方案1】:

首先,您应该将文件从 document.php 重命名为 Document.php。其次,如果你想通过new 创建它的实例,你不应该从CComponent 类扩展它。

要使用组件而不通过new 创建它,您应该

    从 CApplicationComponent 扩展您的类。

    在 config.php 的 components 部分进行配置:

    '文档' => 数组( '类' => '文档', // 其他属性 ),

    将其用作 Yii::app()->document->method();

另外,如果你从 CApplicationComponent 扩展你的类,你不应该定义 __construct 方法,而是所有初始化都应该发生在被覆盖的 init() 方法中。

【讨论】:

感谢您的回答。但我不明白你。我如何在我的应用程序中使用组件而不使用新组件?我已经阅读了yiiframework.com/doc/guide/1.1/en/basics.component,但没有关于将组件类嵌入到应用程序中的信息。【参考方案2】:

基本上它缺少导入文件:

Yii::import('application.components.Document');

【讨论】:

以上是关于如何在 web-app 中使用 Yii 组件?的主要内容,如果未能解决你的问题,请参考以下文章

php yii - 如何从 yii 图像组件获取图像宽度和高度属性 [关闭]

Yii2 中的本地组件是啥? [关闭]

Yii 使用组件和行为

在 Tomcat 5.5 中部署 web-app 时如何解决错误 listenerStart?

yii2项目实战-路由美化以及如何正确的生成链接

Yii 2.0进阶版 高级组件 ES/Redis/ Sentry 优化京东平台