2

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

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

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

- 对小部件的所有调用都是相同的(库的路径,保存图像的位置,...)

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

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

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

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

编辑:

澄清我的想法:我的小部件将生成一些可以存储在可配置目录中的图像。但是由于每次调用小部件时这个目录都必须相同,所以我看不出将这个配置放入小部件调用中的意义!这就是为什么我正在考虑将一些参数放入配置文件中,在params数组中,例如:

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

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

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

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

4

1 回答 1

2

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

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

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

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

于 2012-12-19T09:00:27.453 回答