Php SuiteCRM:从beforesave钩子逻辑重定向到editview
从beforesave钩子逻辑重定向到editview 如果在保存钩子逻辑之前发生错误,我正在尝试从该逻辑重定向。它应该重定向到带有错误的编辑视图。我正在使用以下代码:Php SuiteCRM:从beforesave钩子逻辑重定向到editview,php,redirect,sugarcrm,suitecrm,Php,Redirect,Sugarcrm,Suitecrm,从beforesave钩子逻辑重定向到editview 如果在保存钩子逻辑之前发生错误,我正在尝试从该逻辑重定向。它应该重定向到带有错误的编辑视图。我正在使用以下代码: function ShowError($errorMsg,$beanID){ try{ SugarApplication::appendErrorMessage('An error has been occured: '.$errorMsg); $params = array(
function ShowError($errorMsg,$beanID){
try{
SugarApplication::appendErrorMessage('An error has been occured: '.$errorMsg);
$params = array(
'module'=> 'ad123_Ads',
'action'=>'EditView',
'id' => $beanID
);
SugarApplication::redirect('index.php?' . http_build_query($params));
} catch (Exception $e) {
echo 'Caught exception: ', $e, "\n";
}
}
但问题是重定向后所有字段都未填充。其中一个参数错误,它必须是
记录
,而不是id
试试这个:
try{
SugarApplication::appendErrorMessage('An error has been occured: '.$errorMsg);
$params = array(
'module'=> 'ad123_Ads',
'action'=>'EditView',
'record' => $beanID
);
SugarApplication::redirect('index.php?' . http_build_query($params));
}
catch (Exception $e) {
echo 'Caught exception: ', $e, "\n";
}
我不推荐这种验证,因为您将丢失对表单所做的更改。通常,您必须在提交之前进行JS验证,以便用户在提交和丢失所有更改之前有时间更正错误
SugarApplication::appendErrorMessage('End Date must be after Start Date');
$queryParams = array(
'module' => $module_name,
'action' => $action,
'record' => $recordId,
);
SugarApplication::redirect('index.php?' . http_build_query($queryParams));
这里$module_name是您正在编写逻辑钩子的模块。
$action是“EditView”或“DetailView”。
$recordId是$bean->id
您需要了解,在保存之前,逻辑钩子不会返回记录ID,因为它还没有被分配。这将使页面返回空白
我认为解决这个问题的最好方法是使用after_save logic hook。当您将bean->id传递给上面的recordId时,这将恢复表单上的所有值