2014-04-01 30 views
1

我通过添加一些额外的字段来自定义joomla注册模块。 如果注册成功,我需要调用一些JavaScript代码。 所以我改变了登记控制器文件(分量/ com_users /控制器/ registration.php的),如:Joomla 2.5 - 如何在MVC控制器中调用JavaScript代码?

public function register() 
{     

    // Check for request forgeries. 
    JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); 

     ... 
    // Attempt to save the data. 
    $return = $model->register($data); 
    if ($return === true) { 
     $script = "<Here comes javascript code>"; 
     echo $script; // this doesn't work 

     // I don't know how to call above script 
     ... 
    } 
    ... 
} 

回波就不会在这里工作,我发现的Joomla需要使用它的API,如“$文档 - > addScriptDeclaration($脚本);” 但是这个代码需要在视图上运行,而不是在控制器上运行。

有什么想法? 在此先感谢。

+0

不,不,不。请不要编辑任何核心文件。而是通过一个可以操纵注册功能的插件进行更改 – Lodder

+0

我知道这很糟糕。只有我想知道如何在这种情况下调用JavaScript代码。 – Alex

回答

1

您应该使用exit构造来执行脚本。因为脚本在窗口加载后运行完美。所以当你在javascript之后使用exit时,它会终止php脚本的执行,然后你的javascript将会运行。

请尝试下面的代码。

public function register() 
{     

// Check for request forgeries. 
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); 

    ... 
// Attempt to save the data. 
$return = $model->register($data); 
if ($return === true) { 
    $script = "<Here comes javascript code>"; 
    echo $script; // this doesn't work 
    exit; 
    // I don't know how to call above script 
    ... 
} 
... 
} 

希望它能帮上忙。

+0

有上述代码之后重定向代码等 \t \t \t $这 - > setMessage(JText :: _( 'COM_USERS_REGISTRATION_SAVE_SUCCESS')); \t \t \t $ this-> setRedirect(JRoute :: _($ _ SERVER ['HTTP_REFERER'],false)); 所以我不必退出。 – Alex

+0

如果您不会退出代码,JavaScript将无法使用。你可以使用window.location.href重定向。 –

相关问题