i using symfony 2.7 , kitpagesdatagridbundle
i developing application school in have 2 entities 1-n relationship: section-courses.
here 2 entities:
section
/** * @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; course
/** * @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; now, i'd able retrieve linked 'course' objects section , iterate on them in twig template. time being, haven't been able so, i've created prototype concatenate courses names , ids string in section's repository using query builder, , parse concatenations in twig template such:
sectionrepository
/** * @return \doctrine\orm\querybuilder */ public function getgridquerybuilder() { $qb = $this->createquerybuilder('s'); $qb ->select('s, groupconcat(c.name separator \'|\') courses, groupconcat(c.id separator \'|\') coursesid') ->leftjoin('s.courses', 'c') ->groupby('s.id') ->orderby('s.name'); return $qb; } sectioncontroller
(the 'dummy[coursesnames]' field allows me perform search on courses names)
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)]); } section twig template
what have:
{% embed kitpages_data_grid.grid.default_twig {'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> {% course in courses %} {% if not course 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 %} what i'd able do:
{% embed kitpages_data_grid.grid.default_twig {'grid': grid} %} {% block kit_grid_thead_column %} <th>courses list</th> {% endblock %} {% block kit_grid_tbody_column %} <!-- courses --> <td> {# here using section object #} {% course in section.courses %} <a href="{{ path ("viewcourse", {"id": course.id }) }}" ><span class="label label-primary">{{ course.name }}</span></a> {% endfor %} </td> {% endblock %} {% endembed %} even though prototype works well, not parsing stuff @ all, , far prefer working section objects.
i've tried like
{{ item['s'].name }} in template received error message: key "s" array keys "s.id, s.name, courses, coursesid" not exist , although did "select('s')" in query builder.
i don't know if i'd possible. otherwise, considering dropping kitpages stuff , build tables myself in templates.
thank you!
i figured out wanted not possible believe that, kitpages datagrid using querybuilder, not able retrieve entities without having change bundle logic. therefore reverted entities sent twig, , iterated on attributes in table.
Comments
Post a Comment