2

我正在开发一个在网站上显示下载的扩展。您可以在 GitHub 上查看完整的当前源代码。

鉴于我的控制器中的这段代码:

  $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在模板的另一个位置完美呈现。

我的流体模板有问题吗?

4

1 回答 1

3

抱歉,这不是很清楚。下一次尝试:您调用Tx_Downloads_Utility_Filename::construct($linkName)which (默认情况下)调用which 通过用下划线Tx_Downloads_Utility_Filename::clean($linkName)替换任何与正则表达式模式不匹配的内容来再次删除所有特殊字符。/([[:alnum:]_\.-]*)/编码似乎存在问题(可能您的数据库未设置为 UTF-8 编码),因此Text_File_Sömething实际上变成了Text_File_Sömething并且 clean() 方法将其变成了无效字符串。尝试使用utf8_encode()$filename一个。

于 2012-05-26T16:11:16.257 回答