Jump to content
squivo

ContextException while assigning variable to smarty

Recommended Posts

In Prestashop v1.7.5.1, I've just built `mycustommodule`. In a CMS Page, I'm trying to pull some data from mycustommodule via a hook. 

In the ../template/cms/page.tpl file I have:

{block name='cms_content'}
  {$cms.content nofilter}
  {if $cms.id==6}
    <div>
        <h1>Here's my custom hook</h1>
        {hook h='displayCustomHook'}
    </div>
  {/if}
{/block}

In mycustommodule/mycustommodule.php, I have the hook:

public function hookCustomHook( $params ){
    $this->context->smarty->assign( array( 'myvariable' => 'test' ) );
    return $this->display(__FILE__, '/views/templates/hook/mycustommodule.tpl');
}

I cannot assign anything to smarty without getting this error

(1/1) ContextErrorException

Notice: Undefined property: Smarty_Internal_Undefined::$objMap

in smarty_internal_extension_handler.php line 132

 

I even went to github and found that line of code in the Smarty class: 

if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) {

But I feel like this is not a smarty problem -> it's something I've referenced or done or not done in the module.  I have no idea what's going wrong - The whole module is working otherwise - including adding data to a custom table in the backend using an AdminController. 

Has anyone else had this problem? WTF 

Share this post


Link to post
Share on other sites
Posted (edited)

Is dispatching the hook different than registering it? I can see my hook in the database table, and it's printing... so where would add the dispatch code? 

$this->hookDispatcher->dispatch();

This is my install code:

public function install()
{

  if (Shop::isFeatureActive())
    Shop::setContext(Shop::CONTEXT_ALL);

    if (!parent::install() || !$this->registerHook('displayCustomHook') || !$this->addTab() || !$this->addMyCustomTables()  )
        return false;

    return true;
}

 

Edited by squivo
the hook name was typed wrong: 'displayCustomHook' is the proper name

Share this post


Link to post
Share on other sites

Oh and also there is no difference between 

$this->context->smarty->assign( array( 'myvariable' => 'test' ) );

and

$this->context->smarty->assign( 'myvariable' => 'test' );

I still get the error. 

 

As far as I tell, my hook is registered and ready to go. 

Share this post


Link to post
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

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More