如何为多个模块使用创建Yii模块/组件/扩展?

时间:2013-11-25 17:40:07

标签: php yii

我正在创建一个包含多个模块的YII应用程序。每个模块都包含FrontendControllerBackendController

现在我拥有所有这些模块共享的功能,例如可自定义的Facebook共享按钮。共享按钮应具有可在后端内编辑的文本和标题。然后显示在模块前端。

最好的方案是为每个控制器添加两行,从而在后端生成另一个设置选项卡,并在前端内部呈现一个共享按钮。

我研究过PHP Traits,它可以为控制器添加功能,但我还需要额外的模型等。

1 个答案:

答案 0 :(得分:1)

您应该利用所谓的应用程序组件进行高级编程。这是在扩展CApplicationComponent的类中分离逻辑并将该组件包含在前端和后端控制器中的方法。

API:http://www.yiiframework.com/doc/api/1.1/CApplicationComponent

示例组件:http://www.yiiframework.com/wiki/187/how-to-write-a-simple-application-component

对于可自定义的Facebook共享按钮的html重用,您可以使用CWidget类并在视图中包含该类。这是html代码重用的最原生方式。

API:http://www.yiiframework.com/doc/api/1.1/CWidget

示例窗口小部件:http://www.yiiframework.com/wiki/310/simple-share-widget-for-facebook-twitter-and-google

以下是如何使用小部件:

<?php
$this->widget('SimpleShare', array(
    'pageTitle' => 'The title of the page.',
    'pageDescription' => 'The long descriptions of the page.',
));
?>