我有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);
}
}
答案 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详细信息