2016-09-29 51 views
3

其实我对sugarcrm和zend框架工作也是新的。如果任何东西不能理解我的下面的问题就意味着评论在这里。现在我真的去我的查询。我需要添加自定义where子句在查询.so我跟着这一个它的作品只用于一般列表视图时,当我使用搜索或提前搜索其获取所有值.so如何添加硬码在条件搜索和预先搜索案例模块如何在列表视图,基本搜索,高级搜索中对哪里条件进行硬编码CE

我不想列出值“其中source_c不喜欢'社交媒体'”;在一般列表视图和搜索和预先搜索如何实现这一目标?

矿的版本是:SugarCRM的社区版23年6月5日

我跟着这些链接https://developer.sugarcrm.com/2011/02/28/add-where-clause-for-listview-data-in-sugarcrm/Search option is removed after adding Where condition to list view suitecrm/sugarcrm?

,所以我在sugar/modules/Cases/views

view.list.php

添加以下代码
<?php 


    if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); 
    require_once('include/MVC/View/views/view.list.php'); 
    // name of class match module 
    class CasesViewList extends ViewList{ 
    // where clause that will be inserted in sql query 
    var $where = "source_c not like 'Social media'"; //this is my where clause 
    //var $where = ""; 

    function CasesViewList() 
    { 
    parent::ViewList(); 
    } 
    /* 
    * Override listViewProcess with addition to where clause to exclude project templates 
    */ 
    function listViewProcess() 
    { 
    // // // $this->lv->setup($this->seed, 'include/ListView/ListViewGeneric.tpl', $this->where, $this->params); 
    // // // echo $this->lv->display(); 

    $this->processSearchForm(); // for search form 
    $this->lv->searchColumns = $this->searchForm->searchColumns; 
    if(!$this->headers) 
    return; 
    if(empty($_REQUEST['search_form_only']) || $_REQUEST['search_form_only'] == false){ 
    $this->lv->ss->assign("SEARCH",true); 
    $this->lv->setup($this->seed, 'include/ListView/ListViewGeneric.tpl', $this->where, $this->params); // call the listview's file 
    $savedSearchName = empty($_REQUEST['saved_search_select_name']) ? '' : (' - ' . $_REQUEST['saved_search_select_name']); // save the last search 
    echo $this->lv->display(); 

    } 
    } 
    } 

    ?> 
以上代码的

仅适用于常规列表视图。我需要对搜索的where子句进行硬编码,并提前搜索。当我搜索不需要列出行“其中source_c不喜欢'社交媒体'”;

请帮我出这个
感谢推进

回答

0

在你/modules/Cases/Case.php, 覆盖create_new_list_query功能,使您可以自定义搜索查询。

像下面这样:

function create_new_list_query($order_by, $where,$filter=array(),$params=array(), $show_deleted = 0,$join_type='', $return_array = false,$parentbean=null, $singleSelect = false){ 
     if (isset($_REQUEST['action']) && $_REQUEST['action'] != 'DetailView' && $_REQUEST['module'] == 'Cases') { 
      date_default_timezone_set("Asia/Manila"); 
      //$lvso = (isset($_REQUEST['lvso'])) ? $_REQUEST['lvso'] : 'desc'; 
      $lvso = 'desc'; 
      $case_number = (isset($_REQUEST['case_number_basic'])) ? $_REQUEST['case_number_basic'] : ''; 
      $case_date_from = (isset($_REQUEST['case_date_from_c_basic']) && !empty($_REQUEST['case_date_from_c_basic'])) ? date('Y-m-d', strtotime($_REQUEST['case_date_from_c_basic'])) : ''; 
      $case_date_to = (isset($_REQUEST['case_date_to_c_basic']) && !empty($_REQUEST['case_date_from_c_basic'])) ? date('Y-m-d', strtotime($_REQUEST['case_date_to_c_basic'])) : ''; 
      //$case_date_from = (isset($_REQUEST['case_date_from_c_basic']) && !empty($_REQUEST['case_date_from_c_basic'])) ? date('Y-m-d', strtotime(convertTimezoneToUtc($_REQUEST['case_date_from_c_basic']))) : ''; 
      //$case_date_to = (isset($_REQUEST['case_date_to_c_basic']) && !empty($_REQUEST['case_date_from_c_basic'])) ? date('Y-m-d', strtotime(convertTimezoneToUtc($_REQUEST['case_date_to_c_basic']))) : ''; 
      $case_subject = (isset($_REQUEST['name_basic'])) ? $_REQUEST['name_basic'] : ''; 
      $application_id = (isset($_REQUEST['account_id_basic'])) ? $_REQUEST['account_id_basic'] : ''; 
      $case_current_status_c_basic = (isset($_REQUEST['case_current_status_c_basic'])) ? $_REQUEST['case_current_status_c_basic'] : ''; 
      $case_source_c_basic = (isset($_REQUEST['case_source_c_basic'])) ? $_REQUEST['case_source_c_basic'][0] : ''; 
      $assigned_user_id_basic = (isset($_REQUEST['assigned_user_id_basic'])) ? $_REQUEST['assigned_user_id_basic'][0] : ''; 
      $open_cases_only_basic = (isset($_REQUEST['open_cases_only_basic'])) ? $_REQUEST['open_cases_only_basic'] : ''; 
      $sdtool_c_basic = (isset($_REQUEST['sdtool_c_basic'])) ? $_REQUEST['sdtool_c_basic'] : ''; 
      $created_by_basic = (isset($_REQUEST['created_by_basic'])) ? $_REQUEST['created_by_basic'][0] : ''; 
      $support_type_basic = (isset($_REQUEST['type_basic'])) ? $_REQUEST['type_basic'][0] : ''; 

      //Build where clause query 
      $where_clause = " WHERE "; 
      $where_clause .= !empty($case_number) ? "case_number = $case_number AND " : ""; 
      $where_clause .= !empty($sdtool_c_basic)? "sdtool_c LIKE '%$sdtool_c_basic%' AND " : ""; 
      $where_clause .= !empty($case_date_from) ? "date(cases.date_entered) >= '$case_date_from' AND " : ""; 
      $where_clause .= !empty($case_date_to) ? "date(cases.date_entered) <= '$case_date_to' AND " : ""; 
      $where_clause .= !empty($case_subject) ? "case_subject_c LIKE '%$case_subject%' AND " : ""; 
      $where_clause .= !empty($application_id) ? "account_id = '$application_id' AND " : ""; 
      $where_clause .= !empty($case_current_status_c_basic) ? "case_current_status_c LIKE '%$case_current_status_c_basic%' AND " : ""; 
      $where_clause .= !empty($case_source_c_basic) ? "case_source_c LIKE '%$case_source_c_basic%' AND " : ""; 
      $where_clause .= !empty($assigned_user_id_basic) ? "cases.assigned_user_id = '$assigned_user_id_basic' AND " : ""; 
      $where_clause .= (!empty($open_cases_only_basic) && $open_cases_only_basic == 1)? "case_current_status_c <> 'Closed' AND " : ""; 
      $where_clause .= !empty($created_by_basic) ? "cases.created_by = '$created_by_basic' AND " : ""; 
      $where_clause .= !empty($support_type_basic) ? "cases.type = '$support_type_basic' AND " : ""; 

      //Check if conditions are appended 
      //$where_clause = (strlen($where_clause) > 7) ? rtrim($where_clause, " AND ") : ""; 
      $deleted_clause = " cases.deleted = 0 "; 
      $where_clause .= $deleted_clause; 
      $ret_array["select"] = "SELECT cases.id ,cases_cstm.sdtool_c,cases_cstm.case_subject_c,cases_cstm.case_current_status_c,cases_cstm.case_due_datetime_c,cases_cstm.case_priority_c,cases_cstm.case_source_c, cases_cstm.case_report_due_date_c, 
              cases.case_number , accounts.name account_name , accounts.assigned_user_id account_name_owner , 'Accounts' account_name_mod, cases.account_id , LTRIM(RTRIM(CONCAT(IFNULL(jt1.first_name,''),' ', 
              IFNULL(jt1.last_name,'')))) assigned_user_name , jt1.created_by assigned_user_name_owner , 'Users' assigned_user_name_mod , LTRIM(RTRIM(CONCAT(IFNULL(jt2.first_name,''),' ', 
              IFNULL(jt2.last_name,'')))) created_by_name , jt2.created_by created_by_name_owner , 'Users' created_by_name_mod, cases.date_entered , LTRIM(RTRIM(CONCAT(IFNULL(jt3.first_name,''),' ', 
              IFNULL(jt3.last_name,'')))) modified_by_name , jt3.created_by modified_by_name_owner , 'Users' modified_by_name_mod, cases.date_modified , cases.assigned_user_id , cases.created_by "; 
      $ret_array["from"] = "FROM cases LEFT JOIN cases_cstm ON cases.id = cases_cstm.id_c LEFT JOIN accounts accounts ON cases.account_id=accounts.id AND accounts.deleted=0 AND accounts.deleted=0 
            LEFT JOIN users jt1 ON cases.assigned_user_id=jt1.id AND jt1.deleted=0 AND jt1.deleted=0 
            LEFT JOIN users jt2 ON cases.created_by=jt2.id AND jt2.deleted=0 AND jt2.deleted=0 
            LEFT JOIN users jt3 ON cases.modified_user_id=jt3.id AND jt3.deleted=0 AND jt3.deleted=0"; 
      $ret_array["from_min"] = " FROM cases"; 
      $ret_array["secondary_from"] =" FROM cases"; 
      $ret_array["where"] = $where_clause; 
      $ret_array['order_by'] = " ORDER BY case_number $lvso"; 
      $ret_array['limit'] = ""; 
      return $ret_array; 
     } 
     else { 
      return parent::create_new_list_query($order_by, $where,$filter,$params, $show_deleted,$join_type, $return_array,$parentbean, $singleSelect); 
     } 
    } 

我亲自创作的这一个,所以我知道这是工作。 谢谢。