Hello TYPO3-Community,
in a current project we have a search result plugin (tx_myext_results) in center col and the search form (tx_myext_searchform) in right col.
When submitting the search form we need the informations in right col to show the submitted values in form again and we need the same information for our result list to show the needed results.
The problem is: You can define only ONE resulting plugin in f:form-ViewHelper. So, if I set it to my result plugin the question appears how to access the same information for my search plugin. In more detail: How to access informations from tx_myext_results within the search plugin that can only access tx_myext_search?
I found a solution with help of an initializeAction:
/**
* preprocessing for all actions
*
* @return void
*/
protected function initializeAction() {
// register foreign argument for search action
$foreignPluginContext = t3lib_div::_POST('tx_myext_results');
if (isset($foreignPluginContext['search'])) {
$search = $foreignPluginContext['search'];
if (is_array($search) && count($search)) {
$this->request->setArgument('search', $search);
}
}
}
Now our request has a new Argument called search. So now it's time to access this argument in searchAction:
/**
* action search
*
* @param Tx_MyExt_Domain_Model_Search $search
* @return void
*/
public function searchAction(Tx_MyExt_Domain_Model_Search $search = NULL) {
$this->view->assign('search', $search);
}
As you can see we haven't made any modifications to our searchAction. But in $search variable we have a complete aggregate root object from the foreign plugin.
http://forge.typo3.org/projects/typo3v4-mvc/wiki/Configurable_Plugin_Namespaces
[..] most cases using pluginNamespace you also need to set
plugin.tx_myext_searchform.mvc.callDefaultActionIfActionCantBeResolved = 1