Контроллеры и шаблон (как правильно фильтровать результаты или передавать аргументы через бэкэнд?)

У меня возникла следующая проблема. У моего сайта есть расширение (написанное мной), которое моделирует автопарк. Есть транспортные средства (немецкий: Fahrzeug извините за это и в будущем, когда я буду использовать немецкий в своем коде/сообщении) и есть VCategories (FzKategorie). Они стоят в соотношении N-1, что означает, что N транспортных средств имеют все 1 категорию мин/макс. Я создал второй плагин для этой задачи и дал ему действие по умолчанию: ListByCateory. Теперь я застрял, КОГДА фильтровать мои результаты, ГДЕ передавать аргументы, какие элементы категории должны отображаться и КАК понимать контроллеры и шаблоны Fluid в целом. Я прочитал всю (устаревшую и отсутствующую //код) документацию по разработке расширений и пока не могу продвинуться дальше.

<?php
namespace Y7group\Y7Fahrzeugdatenbank\Controller;
/**
* FahrzeugController
*/
class FahrzeugController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    /**
     * fahrzeugRepository
     *
     * @var \Y7group\Y7Fahrzeugdatenbank\Domain\Repository\FahrzeugRepository
     * @inject
     */
    protected $fahrzeugRepository = NULL;
    [...]
    /**
     * action listByCategory
     *
     * @return void
     */
    public function listByCategoryAction(){//\Y7group\Y7Fahrzeugdatenbank\Domain\Model\FzKategorie $cat) {
        $vehicles = $this->fahrzeugRepository->findAll(); // get all vehicles
        $this->view->assign('category', 1); // here assign another variable like $cat.
        $this->view->assign('vehicles', $vehicles); // hand over the query results
    }
}

А вот мой шаблон:

<f:layout name="Default" />
<f:section name="main">
<h1>Alle Fahrzeuge Category</h1>
<f:flashMessages renderMode="div" />
<table  class="tx_y7fahrzeugdatenbank" >
<tr>
    <th><f:translate key="tx_y7fahrzeugdatenbank_domain_model_fahrzeug.name" /></th>
    <th><f:translate key="tx_y7fahrzeugdatenbank_domain_model_fahrzeug.beschreibung" /></th>
    <th><f:translate key="tx_y7fahrzeugdatenbank_domain_model_fahrzeug.bild" /></th>
    <th><f:translate key="tx_y7fahrzeugdatenbank_domain_model_fahrzeug.datenblatt" /></th>
</tr>

<f:for each="{vehicles}" as="fahrzeug">
<f:if condition="{category}=={fahrzeug.category}">
    <tr>
        <td><f:link.action action="show" arguments="{fahrzeug : fahrzeug}"> {fahrzeug.name}</f:link.action></td>
        <td><f:link.action action="show" arguments="{fahrzeug : fahrzeug}"> {fahrzeug.beschreibung}</f:link.action></td>
        <td><f:image src="{fahrzeug.bild.originalResource.originalFile.uid}" alt="{fahrzeug.beschreibung}" width="300"/></td>
        <td><f:link.action action="show" arguments="{fahrzeug : fahrzeug}"> {fahrzeug.datenblatt.originalResource.name}</f:link.action></td>
    </tr>
</f:if>
</f:for>

Кто понял мою точку зрения и кто может мне помочь? Я должен заставить это работать до завтра. :_(


person Marc    schedule 25.03.2015    source источник


Ответы (1)


Как насчет того, чтобы просто получить автомобили из базы данных, соответствующие вашей категории? Если вы правильно настроите TCA, вместо

$vehicles = $this->fahrzeugRepository->findAll();

пытаться

$vehicles = $this->fahrzeugRepository->findByCategory($category);

Скорее всего, вы захотите сделать $category настраиваемым. Дайте мне знать, если вам нужна помощь с этим.

person Daniel    schedule 25.03.2015
comment
Спасибо, мне нужна помощь, как передать атрибуты таким образом. Как мне вызвать плагин из ссылки на меню, если методу по умолчанию нужен аргумент вроде категории? - person Marc; 26.03.2015