簡體   English   中英

Symfony2 / KitpagesDataGridBundle實體操縱

[英]Symfony2 / KitpagesDataGridBundle entities manipulation

我正在使用Symfony 2.7和KitpagesDataGridBundle

我正在為一所學校開發一個應用程序,在該學校中我有兩個具有1-N關系的實體:科目課程。

這是兩個實體:

部分

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255, nullable=false)
 */
private $name;

/**
 * @ORM\OneToMany(targetEntity="my\SiteBundle\Entity\Course", mappedBy="section", cascade={"persist"})
 */
private $courses;

課程

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255)
 */
private $name;

/**
 * @ORM\ManyToOne(targetEntity="my\SiteBundle\Entity\Section", inversedBy="courses")
 * @ORM\JoinColumn(nullable=false)
 */
private $section;

現在,我希望能夠從該部分中檢索鏈接的“課程”對象,並在Twig模板中對其進行迭代。 暫時,由於我無法做到,我創建了一個原型,該原型將使用查詢生成器在Section的存儲庫中將課程名稱和ID串聯為字符串,然后將Twig模板中的這些串聯解析為這樣:

SectionRepository

/**
 * @return \Doctrine\ORM\QueryBuilder
 */
public function getGridQueryBuilder()
{
    $qb = $this->createQueryBuilder('s');
    $qb
        ->select('s, GroupConcat(c.name SEPARATOR \'|\') as courses, GroupConcat(c.id SEPARATOR \'|\') as coursesID')
        ->leftJoin('s.courses', 'c')
        ->groupBy('s.id')
        ->orderBy('s.name');

    return $qb;
}

SectionController

(“ Dummy [CoursesNames]”字段使我可以搜索課程名稱)

public function indexAction(Request $request)
{
    $qb = $this->getRepository('mySiteBundle:Section')->getGridQueryBuilder();

    // Grid config
    $gridConfig = new GridConfig();
    $gridConfig
        ->setName('sectionsList')
        ->setQueryBuilder($qb)
        ->setCountFieldName('s.id')
        ->addField(new Field('s.name',['label'=>'Section name', 'filterable'=>true]))
        ->addField(new Field('c.name', ['label'=>'Dummy[CoursesNames]', 'filterable'=>true, 'visible'=>false]));

    // Paginator config
    $this->setGridPaginator($gridConfig, 5);

    return $this->render('mySiteBundle:Section:index.html.twig', ['grid' => $this->getGrid($gridConfig, $request)]);
}

截面樹枝模板

我目前所擁有的:

{% embed kitpages_data_grid.grid.default_twig with {'grid': grid} %}

{% block kit_grid_thead_column %}
    <th>Courses list</th>
{% endblock %}

{% block kit_grid_tbody_column %}
    {% set courses = item['courses']|split('|') %}
    {% set coursesID = item['coursesID']|split('|') %}

    <!-- Courses -->
    <td>
        {% for course in courses %}
            {% if not course is empty %}
                <a href="{{ path ("viewCourse", {"id": coursesID[loop.index0] }) }}" ><span class="label label-primary">{{ course }}</span></a>
            {% else %}
                (No results)
            {% endif %}

        {% endfor %}
    </td>

{% endblock %}

{% endembed %}

我想做的是:

{% embed kitpages_data_grid.grid.default_twig with {'grid': grid} %}

{% block kit_grid_thead_column %}
    <th>Courses list</th>
{% endblock %}

{% block kit_grid_tbody_column %}

    <!-- Courses -->
    <td>

        {# here using section object #}

        {% for course in section.courses %}
            <a href="{{ path ("viewCourse", {"id": course.id }) }}" ><span class="label label-primary">{{ course.name }}</span></a>
        {% endfor %}
    </td>

{% endblock %}

{% endembed %}

即使我的原型運行良好,我還是完全不喜歡解析這些東西,並且到目前為止,我更喜歡使用section對象。

我試圖做類似的事情

{{ item['s'].name }}

在模板中,但是我收到此錯誤消息:盡管我在查詢中執行了“ select(s')”,但鍵“ s.id,s.name,課程,coursesID”的數組的鍵“ s”不存在建設者。

我不知道我想做什么。 否則,我正在考慮刪除KitPages內容,並自己在模板中構建表。

謝謝!

我發現我想要的東西是不可能的,因為我相信,由於KitPages DataGrid使用的是querybuilder,因此我無需更改包邏輯就無法檢索實體。 因此,我恢復了發送給Twig的實體,並在表中遍歷它們的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM