gpt4 book ai didi

php - 锂通用型号过滤器

转载 作者:可可西里 更新时间:2023-11-01 00:10:22 26 4
gpt4 key购买 nike

我目前正在开发一个 Lithium 应用程序,它需要在调用 save() 之前将各种东西添加到对象中。

理想情况下,我可以编写一个过滤器来应用于 Model 类(其他模型扩展的基本模型),如下所示:

Model::applyFilter('save', function($self, $params, $chain) {
// Logic here
});

这可能吗?如果是这样,它应该是一个引导文件吗?

最佳答案

如果我没有误解您的意思,例如,您希望在保存之前自动为对象添加“创建”或“修改”的值。

这是我的做法。

来 self 的extensions/data/Model.php

<?php
namespace app\extensions\data;
use lithium\security\Password;

class Model extends \lithium\data\Model {

public static function __init() {
parent::__init();

// {{{ Filters
static::applyFilter('save', function($self, $params, $chain) {
$date = date('Y-m-d H:i:s', time());
$schema = $self::schema();

//do these things only if they don't exist (i.e. on creation of object)
if (!$params['entity']->exists()) {

//hash password
if (isset($params['data']['password'])) {
$params['data']['password'] = Password::hash($params['data']['password']);
}

//if 'created' doesn't already exist and is defined in the schema...
if (empty($params['date']['created']) && array_key_exists('created', $schema)) {
$params['data']['created'] = $date;
}
}

if (array_key_exists('modified', $schema)) {
$params['data']['modified'] = $date;
}
return $chain->next($self, $params, $chain);
});
// }}}
}
}

?>

我在那里也有一些密码散列。您可以删除它而不影响任何功能。

关于php - 锂通用型号过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9621005/

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