1

ユーザーがログインするたびに表示されるユーザーパネルボックスに未読メッセージの数を表示したいと思います。

ベースレイアウトに含まれるユーザーパネルボックスにコントローラーからのメッセージ数を渡すには? パネルはすべてのページ (インデックスも) に表示されるため、そのためにルートを使用することはできません。

現在、グローバル セッションを使用して送信していますが、もっとうまくできると思います。手がかりはありますか?

コントローラー:

if(isset($_SESSION['user_id'])){
$unreaded=Model::factory('Message')->filter('getUnreadedGroups',$_SESSION['user_id']);
$_SESSION['unreaded']=$unreaded->opened;}

ベースレイアウト

<!DOCTYPE html>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                <link rel="stylesheet" href="/css/reset.css" />
                <link rel="stylesheet" href="/css/style.css" />
                <title>{% block page_title %} {% endblock %}</title>
                <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
                <script type="text/javascript" src="/js/jquery.scripts.js"></script>
            </head>
            <body>
                <div id="all">

                    <div id="top-container">
                        <div id="logo">test</div>
                        <div id="search-box"></div>
                    </div>
                    <div id="left-side">
                        <div class="menu">
                            <ul>
                                <li class="nav_dashboard active"><a href="/">Strona główna</a></li>
                                <li class="nav_graphs"><a href="/wszystkie">Wzory</a></li>
                                <li class="nav_forms"><a href="/najnowsze">Najnowsze</a></li>
                                <li class="nav_typography"><a href="/najlepiej-oceniane">Najlepiej oceniane</a></li>
                            </ul>
                        </div>
                    </div>

                    <div id="page">
        {% block content %} {% endblock %}
                    </div>

                    <div id="right-side">
                        <div id="login-container">

                            {% if session.user_id is defined %}
                                    {% include 'user_panel.php' %}
                            {% else %}
                                    {% include 'login_form.php' %}
                            {% endif %}
                        </div>
                    </div>
                </div>
            </body>
        </html>

ユーザーパネルボックス

  <div class="login-top" id="login-form-top">
        <div id="welcome">Witaj, <span>John Doe</span></div>
        <p id="last-login">Ostatnie logowanie:</p>
        <div id="logout-msg-container">
            <div class="logut"><a href="/wyloguj" class="logout">Wyloguj</a></div>
            <a id="msg-number" href="/profil/wiadomosci">
                <span class="number">
                  {% if session.unreaded >0 %}
                    {{ session.unreaded }}
                  {% else %} 0
                  {% endif %}
                </span>
            </a>
        </div>
    </div>
    <div class="menu">
        <p class="header">Profil użytkownika</p>
        <ul>
            <li><a href="/profil/edytuj">Twoje Dane</a></li>
            <li><a href="/profil/galeria">Twoje zbiory</a></li>
            <li><a href="/profil/wiadomosci">Twoje wiadomości</a></li>
        </ul>
    </div>

典型的なテンプレート

{% extends 'layout.php' %}

    {% block page_title %}Najnowsze pliki{% endblock %}
    {% block content %}
                    <div id="page-top">
                        <h1>Najnowsze</h1>
                        <p>+ <span class="blue">12</span> wzorów</p>
                    </div>

                    <div id="main-topvote">
                        <div class="title"><a href="">Najnowsze</a><span>( ostatni tydzień )</span></div>
                        <div class="content">
                            {% for file in files %}
                                <p>{{ file.idFile }}<br/> {{ file.date_add }}<br/> {{ file.desc }}<br/> {{ file.title }}<br/><br/></p>
                            {% else %}  
                                <p>There are currently no articles.</p>
                            {% endfor %}
                        </div>
                    </div>
    {% endblock %}
4

1 に答える 1

0

私はこれをテストしていません(https://github.com/fabpot/Twig/issues/293):

ベースレイアウト:

...
<div id="right-side">
    {% block side %}
        {% block side-login %}
            {% if session.user_id is defined %}
               {% include 'user_panel.php' %}
            {% else %}
               {% include 'login_form.php' %}
            {% endif %}
        {% endblock %}
    {% endblock %}
</div>
...

典型的なテンプレート:

...
{% block side %}
    {% set count = 12 %}
    {% block side-login %}
        {{ parent() }}
    {% endblock %}
{% endblock %}
...

したがって、ユーザー パネル ボックスで {{count}} を使用できます。サイドログインブロックの定義をスキップすることもできます..しかし、よくわかりません。

于 2012-10-03T09:35:35.797 に答える