gpt4 book ai didi

validation - CakePHP 模型验证与数组

转载 作者:行者123 更新时间:2023-12-04 17:13:50 25 4
gpt4 key购买 nike

我想对我的模型中的列表使用 CakePHP 的核心验证:

var $validate = array(
'selectBox' => array(
'allowedChoice' => array(
'rule' => array('inList', $listToCheck),
'message' => 'Enter something in listToCheck.'
)
)
);

然而, $listToCheck数组与 View 中使用的数组相同,用于填充选择框。我把这个功能放在哪里?
public function getList() {
return array('hi'=>'Hello','bi'=>'Goodbye','si'=>'Salutations');
}

已经在我的 Controller 中,在我为 View 设置的操作之一中,例如:
public function actionForForm() {
$options = $this->getList();
$this->set('options', $options);
}

所以,我不想复制 getList()函数...我可以把它放在哪里,以便模型可以调用它来填充它的 $listToCheck大批?

谢谢你的帮助。

最佳答案

考虑到它是数据,您应该在模型中存储有效选择的列表。

class MyModel extends AppModel {

var $fieldAbcChoices = array('a' => 'The A', 'b' => 'The B', 'c' => 'The C');

}

您可以像这样在 Controller 中获取该变量:
$this->set('fieldAbcs', $this->MyModel->fieldAbcChoices);

不幸的是,您不能简单地在 inList 的规则声明中使用该变量。规则,因为规则被声明为实例变量,并且只能静态初始化(不允许使用变量)。最好的方法是在构造函数中设置变量:
var $validate = array(
'fieldAbc' => array(
'allowedChoice' => array(
'rule' => array('inList', array()),
'message' => 'Enter something in listToCheck.'
)
)
);

function __construct($id = false, $table = null, $ds = null) {
parent::__construct($id, $table, $ds);

$this->validate['fieldAbc']['allowedChoice']['rule'][1] = array_keys($this->fieldAbcChoices);
}

如果您不习惯覆盖构造函数,您也可以在 beforeValidate() 中执行此操作。打回来。

另请注意,您不应将字段命名为“selectBox”。 :)

关于validation - CakePHP 模型验证与数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933657/

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