Typo3 Fluid extbase-如何执行外部控制器?

时间:2015-08-10 08:06:35

标签: typo3 extbase

我有2个不同的扩展名。我想在我的第一个控制器中执行第二个控制器(外部)

两个不同的扩展1.课程,2。搜索

class CourseController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    /**
    * courseRepository
    *
    * @var \TYPO3\Courses\Domain\Repository\CourseRepository
    * @inject
    */
    protected $courseRepository = NULL;
    /**
     * action list
     *
     * @return void
     */
    public function listAction() {
        /** I want to access Search extension Controller (f.e searchRepository->listAction() )**/       
    }
}

class SearchRepository extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    /**
    * searchRepository
    *
    * @var \TYPO3\Courses\Domain\Repository\SearchRepository
    * @inject
    */
    protected $searchRepository = NULL;
    /**
     * action list
     *
     * @return void
     */
    public function listAction() {
        $searches = $this->searchRepository->findAll();
        $this->view->assign('searches', $searches);         
    }
}

1 个答案:

答案 0 :(得分:1)

<强> TL; DR:

在控制器中,您通常会 Alamofire.request(.GET, urlPath, parameters: parameters, headers: ["X-API-KEY": apiKey, "Content-type application":"json", "Accept application" : "json"]).responseJSON() { (req,res, data, error) in //blah blah } forward()委托给不同的ControllerAction,例如委托'myExtensionKey'的redirect()

SearchController::listAction()

$this->forward('list', 'Search', 'myExtensionKey');

长版:

来自MVC documentation of Flow的引用与Extbase MVC非常相似:

  

通常,控制器需要将执行推迟到其他控制器或   动作。为此,TYPO3 Flow支持内部和内部   外部重定向:

     
      
  • 在由forward()触发的内部重定向中,URI执行   不要改变。

  •   
  • 在外部重定向中,浏览器会收到HTTP   位置标题,将他重定向到新控制器。因此,URI   变化。

  •   

API是:

$this->redirect('list', 'Search', 'myExtensionKey');

可以在Extbase API

中找到编程API详细信息