TYPO3 7.6 - 向控制器添加公共功能

时间:2016-11-13 16:40:51

标签: typo3-7.6.x

我只是尝试使用列表视图和详细视图创建关于花的第一个扩展。现在我想添加在详细视图中浏览花朵的可能性。

我找到了以下代码Extbase Repository: findNext und findPrevious Funktionen 并将其添加到我的存储库

 /**
 * The repository for Pflanzens
 */
class PflanzenRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{

    protected $defaultOrderings = array(
        'nameDeutsch' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
    );
    /**
     * Find next item by uid
     * @param integer $uid The uid of the current record
     * @return boolean|\TYPO3\CMS\Extbase\Persistence\Generic\QueryResult 
     */
    public function findNext($uid) {
        $query = $this->createQuery();
        $result = $query->matching($query->greaterThan('uid',$uid))->setLimit(1)->execute();
        if($query->count()) {
            return $result;
        } else {
            return false;
        }
    }

    /**
     * Find previous item by uid
     * @param integer $uid The uid of the current record
     * @return boolean|\TYPO3\CMS\Extbase\Persistence\Generic\QueryResult 
     */
    public function findPrev($uid) {
        $query = $this->createQuery();
        $ordering = array('uid'=>\TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING);
        $result = $query->matching($query->lessThan('uid',$uid))->setLimit(1)->setOrderings($ordering)->execute();
        if($query->count()) {
            return $result;
        } else {
            return false;
        }
    }
 }

这是我的控制器:

 /**
  * PflanzenController
  */
class PflanzenController extends    \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{

    /**
     * pflanzenRepository
     *
     * @var \TMRuebe\Faerbepflanzen\Domain\Repository\PflanzenRepository
     * @inject
     */
    protected $pflanzenRepository = NULL;

    /**
     * action list
     *
     * @return void
     */
    public function listAction()
    {
        $pflanzens = $this->pflanzenRepository->findAll();
            $this->view->assign('pflanzens', $pflanzens);
    }

    /**
     * action show
     *
     * @param \TMRuebe\Faerbepflanzen\Domain\Model\Pflanzen $pflanzen
     * @return void
     */
    public function showAction(\TMRuebe\Faerbepflanzen\Domain\Model\Pflanzen $pflanzen)
    {
        $this->view->assign('pflanzen', $pflanzen);
    }
}

现在我需要帮助如何将两个公共函数添加到控制器。我还需要一个提示,我可以在我的流体模板中使用该变量来创建上一个链接和下一个链接。

1 个答案:

答案 0 :(得分:0)

showAction()中的

您需要使用findNext()findPrev()的结果分配其他变量。

$this->view->assign('previous', \TMRuebe\Faerbepflanzen\Domain\Repository\PflanzenRepository::findPrev($pflanzen['uid']));
$this->view->assign('next', \TMRuebe\Faerbepflanzen\Domain\Repository\PflanzenRepository::findNext($pflanzen['uid']));

在您的详细信息模板中,您需要构建链接,例如列表视图中的链接。

您可以使用当前对象构建方法,以便更轻松地访问next和prev。