0

Twig を使用してページに配列をレンダリングしようとしていますが、常に次のエラー コードが表示されます。

テンプレートのレンダリング中に例外がスローされました ("Notice: Trying to get property of non-object in C:\xampp\htdocs\JPP\app\cache\dev\classes.php line 10098") in ProfileBundle:Profile :profile.html.twig の 228 行目。

profile.html.twig を見ると、次の for ループが表示されます。

                    `{% for Educations in Education|sortByDate %}
                    <div id="education{{loop.index0}}">                               
                            <tr>
                                <td class="border">{{ Educations.fromDate|date('d-m-Y') }}</td>
                                <td>&nbsp;</td>
                                <td class="border">{{ Educations.toDate|date('d-m-Y') }}</td>
                                <td>&nbsp;</td>                                    
                                <td class="border">{{ Educations.company }}</td>
                                <td>&nbsp;</td>
                                <td class="border" id="jobsChar{{loop.index0}}">{{ Educations.jobs }}</td>
                                <td>&nbsp;</td>
                                <td class="border"><input type="button" title="Show Details" class="showDetails"  id="details_show{{loop.index0}}"/><input type="button" title="Edit" class="editJob" id="education_edit{{loop.index0}}" /><form style="display:inline" action="../deleteJob" id="deleteJob"><input type="button" title="Delete Job" class="deleteJob" id="job_delete{{loop.index0}}" /></form></td>
                            </tr></div>{% endfor %}` 

以下では、TWIG の for ループによって処理されるべき配列を確認できますが、成功していません...

array(5) { [0]=> array(9) { ["id"]=> int(80) ["userId"]=> int(3) ["company"]=> string(24) "Solothurner Spitäler AG" ["jobArea"]=> int(0) ["subJobsArea"]=> int(0) ["jobs"]=> int(2) ["jobLabel"]=> string(8) "Förster" ["fromDate"]=> object(DateTime)#437 (3) { ["date"]=> string(19) "2010-01-01 00:00:00" ["timezone_type"]=> int(3 ) ["タイムゾーン"]=> string(13) "ヨーロッパ/ベルリン" } ["toDate"]=> object(DateTime)#436 (3) { ["date"]=> string(19) "2011-02 -09 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "ヨーロッパ/ベルリン" } } [1]=> array(9) { ["id "]=> int(87) ["userId"]=> int(3) ["会社"]=> string(6) "TOP IT" ["ジョブエリア"]=> int(0) ["サブジョブエリア"]=> int(0) ["ジョブ"]= > int(3) ["jobLabel"]=> string(20) "Dipl. Pflegefachfrau" ["fromDate"]=> object(DateTime)#433 (3) { ["date"]=> string(19) " 2008-05-01 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } ["toDate"]=> object(DateTime) #432 (3) { ["date"]=> string(19) "2009-05-22 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) ) "ヨーロッパ/ベルリン" } } [2]=> array(9) { ["id"]=> int(103) ["userId"]=> int(3) ["company"]=> string(10 ) "ヘルサナ AG" ["jobArea"]=> int(0) ["subJobsArea"]=> int(0) ["jobs"]=> int(1) ["jobLabel"]=> string(11) "Holffäller" ["fromDate"] => object(DateTime)#430 (3) { ["date"]=> string(19) "2012-10-01 00:00:00" ["timezone_type"]=> int(3) ["timezone" ]=> string(13) "ヨーロッパ/ベルリン" } ["toDate"]=> object(DateTime)#429 (3) { ["date"]=> string(19) "2013-05-01 00:00 :00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } } [3]=> array(9) { ["id"]=> int (104) ["userId"]=> int(3) ["company"]=> string(8) "ALPIQ AG" ["jobArea"]=> int(0) ["subJobsArea"]=> int(0) ) ["ジョブ"]=>int(2) ["jobLabel"]=> string(8) "Förster" ["fromDate"]=> object(DateTime)#427 (3) { ["date"]=> string(19) "2013-05 -01 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } ["toDate"]=> object(DateTime)#426 ( 3) { ["date"]=> string(19) "2013-05-09 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "ヨーロッパ/ベルリン" } } [4]=> array(9) { ["id"]=> int(130) ["userId"]=> int(3) ["company"]=> string(8) "ALPIQ AG" ["jobArea"]=> int(0) ["subJobsArea"]=> int(0) ["jobs"]=> int(2) ["jobLabel"]=> string(8) "Förster" [ "fromDate"]=>object(DateTime)#424 (3) { ["date"]=> string(19) "2013-05-01 00:00:00" ["timezone_type"]=> int(3) ["timezone"]= > string(13) "ヨーロッパ/ベルリン" } ["toDate"]=> object(DateTime)#439 (3) { ["date"]=> string(19) "2013-05-09 00:00:00 " ["timezone_type"]=> int(3) ["timezone"]=> string(13) "ヨーロッパ/ベルリン" } } }} } }} } }

助けてくれますか?どうもありがとうございました。

乾杯ロジャー

4

3 に答える 3

0

デフォルトでは、Twig はフィルターから返されたデータをエスケープしようとします。Twig が返される結果が配列であることを期待せず、それを壊してしまう可能性があります。Twig フィルターを定義するときに、「is_safe」を true に設定してみてください。

それがうまくいかない場合、そのようなフィルターを使用できるとは思えません。フィルターは通常、複雑なデータではなく、テキスト操作に使用されます。フィルターの代わりに関数を定義してみるか、最悪の場合、必要な場所でデータを処理することもできます => コントローラー。

于 2013-07-23T14:39:49.660 に答える
0

あなたの問題は小枝にはありません。最初に行を追加すると、{{ dump(Educations) }}null が返されると確信しています。問題はコントローラーにあります。あなたはそれをダンプしてうまくいきましたが、私はあなたがコントローラーにダンプしたと仮定しています。アクションコードまたはその最後の数行を追加してください。変数をテンプレートに追加します。

于 2013-07-23T15:55:00.693 に答える