为小部件定义参数的最佳方法?

时间:2012-12-18 23:06:16

标签: view yii widget

我正在创建一个小部件,其中有两种类型的参数:

- 可以根据我们调用窗口小部件的位置而改变的那个,那些将在窗口小部件调用中定义:

<?php $this->widget('ext.myWidget', array(
    'someParams' => 'someValues',
)); ?>

- 对小部件的所有调用都是相同的(图书馆的路径,保存图像的地方,......)

我想知道定义第二类参数的最佳方法是什么。

我在让用户在配置文件的params数组中定义它或在Widget文件的数组中定义它之间犹豫不决。

第一个选项的主要优点是用户不必修改Widget文件,因此在更新的情况下,他的修改不会被覆盖,但这不是特定的用户参数,所以将它放在parmas中配置文件中的数组可能看起来很奇怪。

那么什么是最好的解决方案?如果还有另外一个比上述2更好,请告诉我!

编辑:

澄清我的想法: 我的小部件将生成一些可以存储在可配置目录中的图像。但是,由于每次调用窗口小部件时此目录必须相同,因此我没有看到将此配置放入窗口小部件调用的重点! 这就是我考虑将一些参数放入配置文件的原因,在params数组中如下:

params => array(
    'myWidget' => array(
        'imageDir' => 'images',
    )
)

但我不知道扩展在params数组中是否有一些配置值是否是一个好习惯。

另一个解决方案是在我的扩展目录中有一个config.php file,用户可以在其中设置自己的值,这样他就不必修改插件的主配置文件。但是这种替代方案的主要缺点是,如果用户更新扩展名,他将失去他的配置。

这就是为什么我正在寻找有关配置小部件的最佳实践

1 个答案:

答案 0 :(得分:2)

也许您所寻找的更多的是应用程序组件而不是小部件。您在使用窗口小部件的组件中拥有更多功能。它仍然可以存在于扩展目录中,包含所有相关文件的文件夹下,并且可以从任何地方轻松调用,但是可以在每个环境的配置文件中定义配置。

在配置中设置组件时,只需将class数组参数指向extensions文件夹,而不是组件文件夹。

<强>更新
如果你确实想要使用一个小部件,因为没有更多的复杂性,你可以在我相信的小部件的应用程序配置中提供一些默认值,我自己从未使用过,请参见此处:http://www.yiiframework.com/doc/guide/1.1/en/topics.theming#customizing-widgets-globally

但是我发现更复杂的小部件,从长远来看,组件可以更好地为我提供服务,因为我可以更方便,更清晰地调用方法和检索选项,但仍然可以在一个文件夹中包含与扩展相关的所有内容。