【发布时间】:2019-12-17 04:02:34
【问题描述】:
这不是很优雅,但我需要将现有代码粘合到新的 Mojolicious 应用程序上并保持一些向后兼容性。
在旧应用程序中,我有一些数据库记录:
# hacked in special sql for categories, keep them in order in the drop down
# 11/7/2011 9999 category number is for folksonomy tags only....
if ( $table eq 'om_categories' ) {
my $sqlstring =
"SELECT * FROM om_categories WHERE category != '9999' order by parent,description";
( $registry_error, $hash_ref ) =
sqlraw( $class, $db, $sqlstring, $id, $token );
然后转换成,选择HTML条目,在几个地方使用:
if ($object eq 'OmYellowpage') {
my ( $option_string, $count ) =
collect_items( 'local', $self->session('db'), 'om_categories', '', 'description', 'select', '' );
my $select_classification = <<EOT ;
'<select type="required" name="classification"><option value=\"\"></option>$option_string</select>'\n
EOT
在新 Mojolicious 应用程序中,我想这样做:
$self->stash( 'selectclassification',$select_classification ) ;
但是,从逻辑上讲,这可能是表单中转义的有效文本,而不是我想要的选择:
<optgroup label=" TRANSPORT"><option value="1004, 1160,Driving skills">Driving skills</option>
我尝试了各种其他 Mojolicious 渲染语法(包括部分渲染语法),但找不到任何当前有效的方法。我不想从根本上重写这一点,因为当前库将失去兼容性。所以我被卡住了,我对 Mojolicious 也比较陌生。
对于好奇的人,this is the old project
【问题讨论】:
-
"..this 在表单中显示为转义的有效文本.." 您能否附上该文本的屏幕截图?预期的结果是什么?
-
我已按要求添加了输出的示例屏幕截图。
-
只是一个疯狂的猜测,但是如果您从在 heredoc 中生成的字符串中删除开始和结束单引号会发生什么(或保留引号,并通过丢失将其直接分配给变量heredoc 部分)?
-
谢谢。在接下来的几天里,我必须专注于其他事情,但我会尝试删除引号。
标签: perl mojolicious