2016-09-29 4 views
3

Eigentlich bin ich neu zu sugarcrm und zend frame arbeiten zu .if etwas nicht in der Lage zu verstehen, meine folgende Frage bedeutet, hier zu kommentieren. Jetzt bin ich für meine Abfrage tatsächlich gehen. Ich muss benutzerdefinierte where-Klausel in der Abfrage hinzufügen. Also ich folgte diesem eine seine funktioniert nur für die allgemeine Listenansicht, wenn ich Suche oder erweiterte Suche verwenden alle Werte holen .so, wie Sie HARD CODE hinzufügen Wo Bedingung in Suche und Fortschritt Suche in Fall ModulWie man die WHERE-Bedingung in der Listenansicht fest programmiert, einfache Suche, Suche in Zucker CE

Ich möchte nicht den Wert "where source_c nicht wie 'Social Media'"; in der Regel Listenansicht und Suche und erweiterte Suche, wie dies zu erreichen?

Mine Version ist: sugarcrm Community Version 6.5.23

ich diese Links https://developer.sugarcrm.com/2011/02/28/add-where-clause-for-listview-data-in-sugarcrm/ gefolgt und Search option is removed after adding Where condition to list view suitecrm/sugarcrm?

so füge ich diesen Code in 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(); 

    } 
    } 
    } 

    ?> 

Der obige Code funktioniert nur für die allgemeine Listenansicht. Ich muss die WHERE-Klausel in der Suche und der Vorwärtssuche auch hart codieren. Wenn ich suche, muss ich keine Zeile auflisten "wo source_c nicht wie 'Social Media'";

mir bitte dieser
Dank

vorantreiben helfen

Antwort

0

In Ihrer /modules/Cases/Case.php, Aufschalten create_new_list_query Funktion, so dass Sie die Suchabfrage anpassen können.

Wie diese unter:

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); 
     } 
    } 

ich persönlich diese eine erstellt, damit ich weiß, dass dies funktioniert. Danke.