我正在创建一个小部件,其中有两种类型的参数:
- 可以根据我们调用窗口小部件的位置而改变的那个,那些将在窗口小部件调用中定义:
<?php $this->widget('ext.myWidget', array(
'someParams' => 'someValues',
)); ?>
- 对小部件的所有调用都是相同的(图书馆的路径,保存图像的地方,......)
我想知道定义第二类参数的最佳方法是什么。
我在让用户在配置文件的params数组中定义它或在Widget文件的数组中定义它之间犹豫不决。
第一个选项的主要优点是用户不必修改Widget文件,因此在更新的情况下,他的修改不会被覆盖,但这不是特定的用户参数,所以将它放在parmas中配置文件中的数组可能看起来很奇怪。
那么什么是最好的解决方案?如果还有另外一个比上述2更好,请告诉我!
编辑:
澄清我的想法:
我的小部件将生成一些可以存储在可配置目录中的图像。但是,由于每次调用窗口小部件时此目录必须相同,因此我没有看到将此配置放入窗口小部件调用的重点!
这就是我考虑将一些参数放入配置文件的原因,在params
数组中如下:
params => array(
'myWidget' => array(
'imageDir' => 'images',
)
)
但我不知道扩展在params
数组中是否有一些配置值是否是一个好习惯。
另一个解决方案是在我的扩展目录中有一个config.php file
,用户可以在其中设置自己的值,这样他就不必修改插件的主配置文件。但是这种替代方案的主要缺点是,如果用户更新扩展名,他将失去他的配置。
这就是为什么我正在寻找有关配置小部件的最佳实践
答案 0 :(得分:2)
也许您所寻找的更多的是应用程序组件而不是小部件。您在使用窗口小部件的组件中拥有更多功能。它仍然可以存在于扩展目录中,包含所有相关文件的文件夹下,并且可以从任何地方轻松调用,但是可以在每个环境的配置文件中定义配置。
在配置中设置组件时,只需将class
数组参数指向extensions文件夹,而不是组件文件夹。
<强>更新强>
如果你确实想要使用一个小部件,因为没有更多的复杂性,你可以在我相信的小部件的应用程序配置中提供一些默认值,我自己从未使用过,请参见此处:http://www.yiiframework.com/doc/guide/1.1/en/topics.theming#customizing-widgets-globally。
但是我发现更复杂的小部件,从长远来看,组件可以更好地为我提供服务,因为我可以更方便,更清晰地调用方法和检索选项,但仍然可以在一个文件夹中包含与扩展相关的所有内容。