0

Symfony 1.4 と Doctrine 1.2 のプロジェクトを実行していますが、DB 呼び出しの 1 つで出力エスケープに問題があります。

問題は、Doctrine クエリで PHP オブジェクトを取得するのではなく、PHP の配列を取得することです。私がこれを行っている理由はまったく別のトピックです。PHP オブジェクトを取得することは解決策ではないとだけ言っておきましょう。基本的に、クエリは 2 つのドクトリン モデル間の内部結合です。モデル 1 はモデル 2 と内部結合し、生成された結果は次のようにアクセスできます。

foreach($results as $result)
{
 echo $result['field1']; // accessing results for model 1 
 echo $result['model2']['field1']; // accessing results for model 2 (this inner joins with the model)
}

上記の例、より具体的には model2 の場合、field1 は HTML マークアップで構成されており、当然出力エスケープされています。HTML マークアップをそのままレンダリングする必要があります。問題はどこにあるのか、

これがレギュレーション Doctrine オブジェクトである場合、単純な $modelObject->getRawValue()->getField(); エスケープせずに HTML マークアップをレンダリングします。HTML マークアップを PHP 配列でレンダリングする方法がわかりません。

ありがとう

4

1 に答える 1

2

(以前のコメントからコピー)。ループprint_r($result)の中にいると、それがエスケープ オブジェクトにラップされていることに気付くかもしれません。getRawValue()もしそうなら、その要素にも使用できるはずですか?

これが機能するのは、エスケーパー オブジェクトがIteratorインターフェイスを実装している (そのため、その上で実行できるためforeach) またArrayAccess(配列のように機能するように見えるため) であるためです。

于 2012-04-11T20:48:58.557 に答える