gpt4 book ai didi

yii - 在 Controller 中设置 const 并在 yii 中作为下拉列表调用 View

转载 作者:行者123 更新时间:2023-12-02 12:10:19 26 4
gpt4 key购买 nike

我在 Controller 中有三个常量:

const TEST1 = 1;
const TEST2 = 2;
const TEST3 = 3;

如何将 View 中的这些值作为下拉菜单调用?

最佳答案

如果您对不同模型中的所有常量感到困惑,您可以使用我编写的代码片段来管理它们。请参阅Managing constants easily (yii 维基文章)

我将仅复制函数和一个示例,但有关完整的 wiki 和详细信息,请访问上面的链接。

直接将此方法放入父类或模型类中:

class ActiveRecord extends CActiveRecord {
const TEST_1 = 1;
const TEST_2 = 2;
const TEST_3 = 3;


/*
Get class constants by token.
If you set constants with same prefix, like:
TEST_1
TEST_2
TEST_3

, you can get it by calling
Class::getConstants('TEST_');
*/
public static function getConstants($token,$objectClass) {
$tokenLen = strlen($token);

$reflection = new ReflectionClass($objectClass); //php built-in
$allConstants = $reflection->getConstants(); //constants as array

$tokenConstants = array();
foreach($allConstants as $name => $val) {
if ( substr($name,0,$tokenLen) != $token ) continue;
$tokenConstants[ $val ] = $val;
}
return $tokenConstants;
}

}

之后,您可以使用此方法获取数组中的特定常量(来自一组):

self::getConstants('TEST_',__CLASS__); //inside same class
ActiveRecord::getConstants('TEST_','ActiveRecord'); //outside, somewhere else in view or controller

对于下拉菜单,它看起来像(如果 MyModel 有父 ActiveRecord)

echo CHtml::dropDownList('name','selected',
MyModel::getConstants('TEST_','MyModel'),
array(// for htmlOptions
)
);

现在,如果添加新常量,您可能会忘记编辑代码中的所有位置。它将自动添加到您的所有下拉列表或其他内容中。

关于yii - 在 Controller 中设置 const 并在 yii 中作为下拉列表调用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13967575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com