2016-11-13 72 views
0

我只是尝试创建我的第一个关于花的扩展与列表视图和详细视图。现在我想添加浏览详细视图上的鲜花的可能性。TYPO3 7.6 - 添加公共功能到控制器

我发现下面的代码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); 
    } 
} 

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

回答

0

in 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。

+0

谢谢。不幸的是,我得到以下错误:核心:异常处理程序(WEB):未捕获TYPO3异常:语法错误,意外';',期待','或')'| – Robert

+0

我错过了右括号。可能有更多的错误。这是一个例子,所以你可以知道如何工作。 –

+0

再次感谢。现在我得到错误:'Core:异常处理程序(WEB):未捕获TYPO3异常:不能使用类型为TMRuebe \ Faerbepflanzen \ Domain \ Model \ Pflanzen的对象作为数组'。我试图理解我必须做的事情,但对我来说并不那么容易。我仍然在寻找一本好的教程或书籍。 – Robert