シムノート

PHPフレームワークSymfonyの学習帳

ユーザ用ツール

サイト用ツール


サイドバー

メニュー



このエントリーをはてなブックマークに追加

blog:2016-01-01:doctrine入門_dashboard_of_the_user

Doctrine入門 : (6) ユーザーのダッシュボード

ユーザーが報告したバグか、ユーザーが担当者に任命されたバグの一覧表(ダッシュボード)を作成します。この一覧表はユーザー毎に作成する為、ユーザーの表示画面に追加します。ここでは再びDQLを使用します。今回は抽出条件を使用します。

Controllerの修正

UserController.phpのshowAction()を以下のように修正します。
※サンプルをシンプルにする為、今回はページ制御を行いません。

// ...
class UserController extends Controller
{
    // ...
    public function showAction(User $user)
    {
        $deleteForm = $this->createDeleteForm($user);

        $dql = "SELECT b, e, r FROM AppBundle:Bug b " .
            "JOIN b.engineer e JOIN b.reporter r ".
            "WHERE b.status = 'OPEN' AND (e.id = ?1 OR r.id = ?1) " .
            "ORDER BY b.created DESC";
        
        $bugs = $this->getDoctrine()->getManager()->createQuery($dql)
            ->setParameter(1, $user->getId())
            ->getResult();

        return $this->render('user/show.html.twig', array(
            'user' => $user,
            'delete_form' => $deleteForm->createView(),
            'bugs' => $bugs,
        ));
    }
    // ...
}

Viewの修正

user/show.html.twigにBug一覧の表示を以下のように追加します。

{% extends 'base.html.twig' %}

{% block body %}
    <h1>User</h1>

    {# ... #}

    <hr>
    
    <h2>Bug List</h2>

    <table class="table table-striped table-hover table-bordered">
        <thead>
        <tr>
            <th>Id</th>
            <th>Description</th>
            <th>Status</th>
            <th>Created</th>
            <th>Reporter</th>
            <th>Engineer</th>
            <th>Products</th>
            <th>Actions</th>
        </tr>
        </thead>
        <tbody>
        {% for bug in bugs %}
            <tr>
                <td><a href="{{ path('bug_show', { 'id': bug.id }) }}">{{ bug.id }}</a></td>
                <td>{{ bug.description }}</td>
                <td>{{ bug.status }}</td>
                <td>{% if bug.created %}{{ bug.created|date('Y-m-d H:i:s') }}{% endif %}</td>
                <td>{{ bug.reporter.name }}</td>
                <td>{{ bug.engineer.name }}</td>
                <td>{{ bug.products|join(', ') }}</td>
                <td>
                    <a href="{{ path('bug_show', { 'id': bug.id }) }}" class="btn btn-default btn-xs" role="button">show</a>
                    <a href="{{ path('bug_edit', { 'id': bug.id }) }}" class="btn btn-primary btn-xs" role="button">edit</a>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
{% endblock %}

動作確認

http://localhost:8000/user にアクセスしてユーザー一覧から任意のユーザーのshowボタンをクリックします。ユーザー表示画面にバグ一覧が表示される事を確認します。


Comments



214 +14​ = ?
blog/2016-01-01/doctrine入門_dashboard_of_the_user.txt · 最終更新: 2016/01/20 06:57 by tsubo