2

Webサイトにダウンロードを表示する拡張機能に取り組んでいます。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 );

結果として得られる出力は次のとおりです ここに画像の説明を入力してください 。3番目のフラッシュメッセージはレンダリングされないことに注意してください。


しかし、ウムラウトがレンダリングされないわけではありません。たとえば、これは私がデバッグしているレコードです。

ここに画像の説明を入力してください

リンクフィールド(画像アイコンと31.06KBの間)は空白ですが、と表示されているはずText_File_Sömething.jpgです。文字列Sömethingは、テンプレートの別の場所で完全に細かくレンダリングされます。

私のFluidテンプレートに問題がありますか?

4

1 に答える 1

3

申し訳ありませんが、それは本当に明確ではありませんでした。次の試行: Tx_Downloads_Utility_Filename::construct($linkName)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 に答える