【发布时间】:2017-09-29 22:04:27
【问题描述】:
Placeholders 在 Mojolicious 中可用。
我们可以通过$c->param( 'placeholder_name' ) 访问它们作为来自用户$c->param( 'post_or_query_param' ) 的其他输入数据
但是当我们在验证后访问参数时,我们使用:
$c->validation->param( 'post_or_query_param' )
如果post_or_query_param 未通过验证,则返回undef。
我们可以通过Restrective placeholders 部分验证占位符,但仍以$c->param( 'placeholder_name' ) 访问它们(因为占位符对验证对象不可用)
这常常导致程序员认为在这个代码位置没有使用经过验证的数据,因为经过验证的数据可以作为:$v->param( 'xxx' )
占位符是来自用户的相同输入作为查询或发布数据。
如何使占位符可用于验证对象?并以与其他验证数据相同的方式访问用户输入:
$v->param( 'validated parameter name' );
【问题讨论】:
-
我不认为这样做是个好主意。这些占位符是 URL 的一部分。在某种程度上,它们是参数(或参数),但它们不是 form 参数,这就是 imho 的验证目的。也就是说,我认为您可以为验证对象提供任意哈希值,而不是依赖其获取 GET 和 POST 参数的内置魔法。
-
@simbabque:我认为,我们应该考虑到 form。查询可能是 json 或 xml 并且在任何情况下数据都将由
$v->param(...)访问。表单验证是特殊情况。此行为不应被硬编码,并且必须在处理程序上中继。它基于Content-Type标头调用。我考虑所有:URL、查询和 POST 正文,作为用户的输入
标签: perl mojolicious