Jump to content
  • 0

Problem z dwoma hookami - filterProductSearch oraz actionProductSearchAfter


Piotr3qx

Question

Cześć :) Potrzebuję dodać do pliku szablonu category.tpl kilka nowych zmiennych. Tworzę do tego moduł. W pliku classes\controller\ProductListingFrontController.php znalazłem przypisanie zmiennych do pliku szablonu oraz funkcję getProductSearchVariables(), która deklaruje zmienne. W tej funkcji tuż przed zwróceniem zmiennych są dwa hooki

 

Hook::exec('filterProductSearch', ['searchVariables' => &$searchVariables]);
Hook::exec('actionProductSearchAfter', $searchVariables);

No i teraz podpinam się pod te hooki, dumpuję dodanie nowych zmiennych i są one ignorowane. 

public function hookFilterProductSearch($params)
{
  $searchVariables = $params['searchVariables'];
  $searchVariables['pagination']['test'] = 'test';
  $searchVariables['test'] = 'test';

  dump($searchVariables);
}


public function hookActionProductSearchAfter($params)
{
  $searchVariables = $params;
  $searchVariables['pagination']['test'] = 'test';
  $searchVariables['test'] = 'test';

  dump($searchVariables);
}

Powyższe funkcje zwracają $searchVariables z nowo dodanymi polami. Natomiast nie są one nigdzie dalej przypisywane.

W podobnym hooku (hookActionPresentCart) działało dodawanie nowych zmiennych. 

I tak - mam świadomość że w funkcji hookActionProductSearchAfter mogę dodać kod aby dodać nowe zmienne ale chciałbym podpiąć się do tych globalnych $searchVariables

$this->context->smarty->assign([
	'test' => 'test',
]);

I takie przy okazji pytanie związane z tymi hookami - jaka jest różnica między poniższymi hookami? Wyglądają bardzo podobnie i są użyte jeden pod drugim. Widzę że w jednym hooku zmienna przekazywana jest referencyjnie a w drugim nie. Czy są jakieś realne różne sytuacje, w których należy wybrać odpowiedni hook (chciałbym po prostu zrozumieć działanie tego)? 

Hook::exec('filterProductSearch', ['searchVariables' => &$searchVariables]);
Hook::exec('actionProductSearchAfter', $searchVariables);

Z góry dziękuję za pomoc :)

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...