从beforesave hook logic重定向到editview
如果在其中发生错误,我尝试从保存挂钩逻辑之前重定向。它应该重定向到编辑视图时出错。我正在使用此代码:
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";
}
}
但问题是重定向后所有字段都没有填充。
答案 0 :(得分:0)
其中一个参数错误,必须是record
而不是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验证,以便用户在提交和丢失所有更改之前有时间更正错误。
答案 1 :(得分:0)
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
您需要了解before_save逻辑钩子不会返回记录ID,因为它尚未分配。这将使页面返回空白。
我认为解决这个问题的最佳方法是使用after_save逻辑钩子。当您将bean-> id传递给recordId以上时,这将恢复表单上的所有值。