Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何在不更新实际数据库的情况下更改DBIx::Class对象值_Perl_Dbix Class - Fatal编程技术网

Perl 如何在不更新实际数据库的情况下更改DBIx::Class对象值

Perl 如何在不更新实际数据库的情况下更改DBIx::Class对象值,perl,dbix-class,Perl,Dbix Class,我正在检查我的一个应用程序中是否存在不匹配的用户名。 如果它发现一个不匹配的用户名,我会将该值包装在标记中 我想在将DBIx::Class对象的用户名值传递回我的JS之前更新它 我目前有下面的,这几乎是我想要的,但不完全 my $mismatch_username = check_for_mismatch_username($self, $id, 'AD'); if(defined $mismatch_username) { my $flagged_username

我正在检查我的一个应用程序中是否存在不匹配的用户名。 如果它发现一个不匹配的用户名,我会将该值包装在
标记中

我想在将DBIx::Class对象的用户名值传递回我的JS之前更新它

我目前有下面的,这几乎是我想要的,但不完全

my $mismatch_username = check_for_mismatch_username($self, $id, 'AD');
    if(defined $mismatch_username)
    {
      my $flagged_username = "<mark>".$info->accountname."</mark> <font color=\"red\">(Mismatch: $mismatch_username)</font>";
       $info->update({accountname => $flagged_username});
    }
$info = {$info->get_columns};
$self->render(json => {info => $info});
my$mismatch_username=检查是否有不匹配的用户名($self,$id,'AD');
if(定义的$U用户名不匹配)
{
我的$flagged_username=“”.$info->accountname。”(不匹配:$Mismatch_username)”;
$info->update({accountname=>$flagged_username});
}
$info={$info->get_columns};
$self->render(json=>{info=>$info});
我不更新DB值是非常重要的。我只想更新变量的值。我目前仍在浏览DBIx::Class文档


任何方向都行。

如果不想修改对象,请不要修改它

(当然,您可以使用
$info->accountname(…)
在不保存字段的情况下更新该字段。但这仍会使对象处于修改状态,其他代码可能会保存该对象。如果该字段上的验证程序拒绝HTML标记,则该字段也可能失败。)

如果您真正需要的只是更改JSON中的用户名,那么首先生成将进入JSON的数据,然后在呈现数据之前更新数据中的相应字段:

my $data = { $info->get_columns };
if (defined $mismatch_username) {
    $data->{accountname} = "<mark>…";
}
$self->render(json => { info => $data });
my$data={$info->get_columns};
if(定义的$U用户名不匹配){
$data->{accountname}=“…”;
}
$self->render(json=>{info=>$data});

在一个程序中看到带有字体标记的DBIC代码和HTML是。。。不寻常。在我看来,在通过JSON发回之前添加标记似乎更容易,而不是发回信息,然后再调用ajax来确定是否存在不匹配并在我的js中添加字体标记。我错过了一个更简单的方法吗?它叫CSS。JSON应该有一个标记作为元数据,前端应该基于此标记内容,然后使用CSS更改颜色<代码>标签只过时了10年17(该死,我老了)。他们遭到了反对。我的评论是开玩笑的,因为我们通常在CGI应用程序中看到这种HTML,而编写CGI的人从来没有听说过DBIC。如果这东西对你有用,没关系。但是还有更现代的方法。我知道必须有另一种方法,因为上述方法打破了遵循MVC模式可以帮助您获得的利益分离。我肯定会很快纠正这个问题。虽然这应该是一个笑话,但我很感激这些信息,这样我就可以纠正它了。谢谢。这可能在翻译中丢失了,但它被称为“关注点分离”。如果你用谷歌搜索一下,或者别的什么。您使用的是MVC框架吗?顺便说一句,返回HTML是完全合法的,但它不再是真正的JSON。它更像是一个异步调用,返回
text/html
。但是
标签仍然很可怕。我会选择
或其他什么。只是不是