Author Topic: Problem with dispatch  (Read 5277 times)

Offline dhigz

  • Newbie
  • *
  • Posts: 45
  • Karma: +16/-0
    • View Profile
Problem with dispatch
« on: December 16, 2015, 01:25:20 AM »

Looking for developer help. I am working on a new extension and ran into a problem with the dispatch command.

In my extensions core file, I have the function: onControllerCommonSeoUrl_InitData(). I have a need for one page to execute a custom url different the the standard url output format generated by seo_url.php. This is the code I have:

Code: [Select]
public function onControllerCommonSeoUrl_InitData(){
                if (isset($this->baseObject->request->get['_route_'])) {
$parts = explode('/', $this->baseObject->request->get['_route_']);
if($parts[0] == 'my_page_name') {
  $this->request->get['m'] = $parts[1];
$this->request->get['y'] = $parts[2];
$rt = 'pages/XXXX/archive';
                                //name removed - don't want to say what the extension is yet

                                 unset($this->baseObject->request->get['_route_']);
                                 //this prevents the script in the base file (seo_url.php) from processing any other data
                                 
                                // The next two lines come from the end of seo_url.php       
//This line works
  $this->baseObject->router->resetController($rt);

                               // This is where the problem is...
  return $this->dispatch($rt,$this->request->get);


}else{

foreach ($parts as $part) {

                                 //continues ........
 

return $this->dispatch($rt,$this->request->get);
Dispatch does run but returns the correct layout for my page with blocks from the intended page and my index page.   

I tried inserting baseObject as you should in an extension core file:   
return $this->baseObject->dispatch($rt,$this->request->get);
This returns a blank page with the logged error:  error: AbanteCart core v.1.2.2 Call to protected method AController::dispatch()  from context 'ExtensionXXXXX'....

The page will load if I use the standard format non-seo url. It will also load if I use a RewriteRule in my .htaccess file (trying to avoid this). The values for dispatch route are correct ($rt = 'pages/XXXX/archive') and the values in the array are valid and correct. Values are correct in the block_layout table.

Any suggestions on what I need to do to get dispatch to properly run?
« Last Edit: December 16, 2015, 02:02:52 AM by dhigz »
Don Higbee

yonghan

  • Guest
Re: Problem with dispatch
« Reply #1 on: December 16, 2015, 02:42:25 AM »
Hi, I think you can copy the dispatch function from the core code into your hook file, make it as a private function and then call the dispatch with $this->dispatch(xxxx). Hope it helps.

Offline dhigz

  • Newbie
  • *
  • Posts: 45
  • Karma: +16/-0
    • View Profile
Re: Problem with dispatch
« Reply #2 on: December 17, 2015, 04:40:11 PM »
Thanks for the input. It didn't work but it did lead me to discovering my problem was much deeper.

Thanks.
Don Higbee

 

Database Error

Please try again. If you come back to this error screen, report the error to an administrator.