我正在创建一个包含多个模块的YII应用程序。每个模块都包含FrontendController
和BackendController
。
现在我拥有所有这些模块共享的功能,例如可自定义的Facebook共享按钮。共享按钮应具有可在后端内编辑的文本和标题。然后显示在模块前端。
最好的方案是为每个控制器添加两行,从而在后端生成另一个设置选项卡,并在前端内部呈现一个共享按钮。
我研究过PHP Traits,它可以为控制器添加功能,但我还需要额外的模型等。
答案 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.',
));
?>