我正在制作扩展程序以在网站上显示下载内容。您可以在on GitHub上查看完整的当前来源。
在我的controller中提供这段代码:
$linkName = Tx_Downloads_Utility_Filename::construct( $download );
$download->setLinkText( $linkName );
这是我想为下载设置标签的地方。遗憾的是,当稍后渲染时,如果$linkName
包含变音符号,则结果将为空(变音符号只是我的测试对象,实际范围未知)。
出于调试目的,我已将该部分扩展为如下所示:
$linkName = Tx_Downloads_Utility_Filename::construct( $download );
$download->setLinkText( $linkName );
$this->flashMessages->add( "'" . strlen( $linkName ) . "'" );
$this->flashMessages->add( urlencode( $linkName ) );
$this->flashMessages->add( $linkName );
结果是: 请注意,不会呈现第三条Flash消息。
但它不会像没有变形金刚一样被渲染。例如,这是我正在调试的记录:
链接字段(图像图标和31.06KB之间)是空白的,但应该说Text_File_Sömething.jpg
。字符串Sömething
在模板的另一个位置完全呈现。
我Fluid template的问题是什么?
答案 0 :(得分:3)
抱歉,这不是很清楚。接下来尝试:
你调用Tx_Downloads_Utility_Filename::construct($linkName)
(默认情况下)调用Tx_Downloads_Utility_Filename::clean($linkName)
,通过下划线替换任何与正则表达式/([[:alnum:]_\.-]*)/
不匹配的内容,再次删除所有特殊字符。
编码似乎有问题(可能你的db没有设置为UTF-8编码)所以Text_File_Sömething实际上变成了Text_File_Sömething和clean()方法把它变成无效的字符串。首先尝试使用utf8_encode()
上的$filename
。