SuiteCRM:从beforesave hook logic

时间:2017-06-09 05:43:14

标签: php redirect sugarcrm suitecrm

从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";
    }

}

但问题是重定向后所有字段都没有填充。

2 个答案:

答案 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以上时,这将恢复表单上的所有值。