Jump to content
  • 0

override kontrolera modulu


design4VIP

Question

w koncu presta dala nam mozliwosc wrzucenia modulu w override (no, w koncu, od paru ostatnich podwersji ;D). juz pomine, ze mogli to bardziej unormatyzowac ze zwylkymi nadipisaniami (okntrolery, klasy) ale.... ze zmiana glownego kontrolera modulu (glownergo pliku) nie ma problemow. ale co w wypadku jak ten modul ma jeszcze ./controllers/ i w tych kontrolerach wprowadzac zmiany? no za chiny nie moge wrzucic dodakowych kontrolerow w override ;/ no jakby nie kombinowal to nie moge go wywolac ;/

 

juz kombinowalem z

'class BankwirePaymentModuleFrontControllerOverride extend BankwirePaymentModuleFrontController'

 

z

'class BankwirePaymentModuleFrontControllerCore extend BankwirePaymentModuleFrontController'

 

z odwloaniem do glownej klasy

'class BankwirePaymentModuleFrontControllerOverride extends ModuleFrontController'

 

'class BankwirePaymentModuleFrontControllerCore extends ModuleFrontController'

 

oczywiscie za kazdym razem czyszcze 'class_index.php', zeby nie bylo ;)

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Nie można nadpisywać kontrolerów modułów.

no to nie takim glupi jak myslalem ;) ale to bezsens... biorac pod uwage, ze 60-70% albo wiecej nowych modulow ma swoje osobne kontrolery jaki sens jest wrzuciac je w override ;/ no nic, dzieki za rozwianie watpliwosci... trzeba bedzie poradzic sobie inczej albo przebidowac kontrolera glownego... tak przegladam i nie moge trafic na jakies konkretne miejsce ;/ jedno co mi sie nasunelo to getInstanceByName($module_name) w Modules.php. ale pytanie jak tutaj teraz wyciagnac z tego $module_name nazwe pliku kontrolera danego modulu ;/ albo, w ktorym ogolnie miejscu siedza odniesienia do override kontrolerow czy klas... nie moge na to trafic ;/

 

EDIT: znalazlem ;) Dispatcher.php, biore sie za kombinacje ;) jak mi cos z tego wyjdzie na pewno opisze rozwaizanie dla potomnych ;)

Edited by design4VIP (see edit history)
Link to comment
Share on other sites

  • 0

jak zazwyczaj, na swoje pytania musze odpowiadac sam :D ponziej rozwiazanie jak dodac ./controllers modulow:

plik ./classes/Dispatcher.php od linii ~284  (ktory oczywiscie laduje po zmianach w ./override):

			// Dispatch module controller for front office
			case self::FC_MODULE :
				$module_name = Validate::isModuleName(Tools::getValue('module')) ? Tools::getValue('module') : '';
				$module = Module::getInstanceByName($module_name);
				$controller_class = 'PageNotFoundController';
				if (Validate::isLoadedObject($module) && $module->active)
				{
					$controllers = Dispatcher::getControllers(array(_PS_MODULE_DIR_.$module_name.'/controllers/front/', _PS_OVERRIDE_DIR_.$module_name.'controllers/front/'));

					if (isset($controllers[strtolower($this->controller)]))
					{
						include_once(file_exists(_PS_OVERRIDE_DIR_.'modules/'.$module_name.'/controllers/front/'.$this->controller.'.php') ? _PS_OVERRIDE_DIR_.'modules/'.$module_name.'/controllers/front/'.$this->controller.'.php':_PS_MODULE_DIR_.$module_name.'/controllers/front/'.$this->controller.'.php');
						$controller_class = $module_name.$this->controller.'ModuleFrontController';
					}
				}
				$params_hook_action_dispatcher = array('controller_type' => self::FC_FRONT, 'controller_class' => $controller_class, 'is_module' => 1);

			break;

zmiana zmiennej '$controllers' :291 oraz ponizej 'include_once' :295 i tyle. jakby nie mozna byl otego do razu wprowadzic ;)

 

Ps. dzieki Krystian za info, bo bez tego, ze "sie nie da" bym nawet nie kombinowal zeby sie dalo tylko dalej metoda prob i bledow szukalbym w samym kontrolrze modulu dlaczego nie chce mi sie wysweitlic :D

Edited by design4VIP (see edit history)
Link to comment
Share on other sites

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...