首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何验证占位符?

问如何验证占位符?
EN

Stack Overflow用户
提问于 2017-09-29 08:32:39
回答 2查看 223关注 0票数 2

占位符在莫灼里有售。

我们可以通过$c->param( 'placeholder_name' )作为来自用户$c->param( 'post_or_query_param' )的其他输入数据访问它们。

但是,在验证之后访问参数时,我们使用:

代码语言:javascript
复制
$c->validation->param( 'post_or_query_param' )

如果undef没有通过验证,则返回post_or_query_param。

我们可以通过Restrective placeholders部分验证占位符,但仍然以$c->param( 'placeholder_name' )的形式访问占位符(因为占位符对验证对象不可用)

这常常导致程序员认为在这个代码中没有使用验证数据,因为验证数据可以作为:$v->param( 'xxx' )提供。

占位符与查询或post数据来自用户的输入相同。

如何使占位符可用于验证对象?并以与其他验证数据相同的方式访问用户的输入:

代码语言:javascript
复制
$v->param( 'validated parameter name' );
EN

回答 2

Stack Overflow用户

发布于 2017-09-29 14:04:27

我找到了这个解决方案:将占位符放入->input

代码语言:javascript
复制
# GET /tariffs/:tariff_id
my $v =  $c->validation;

# Solution: how to make placeholder available to validation:
my $placeholders =  $self->match->stack->[-1];
@{ $v->input }{ keys %$placeholders } =  values %$placeholders;

# etc.
$v->required( tariff_id =>  [ data_exists =>  $self, '!Tariff' ] );
return ...   if $v->has_error;

my $tariff =  $v->param( 'tariff_id' );
票数 1
EN

Stack Overflow用户

发布于 2017-09-29 13:08:42

通常我使用OpenAPI插件并使用这种格式描述API。占位符参数也将通过模式进行验证(就像Query/JSON/Form/XML参数一样)。

OpenAPI验证器基于,并且非常丰富。支持最小,最大,模式,枚举,深层结构等。

阅读有关莫灼力和OpenAPI的文章。

这是验证模式示例和控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46484836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档