2016-02-17 11 views
6

私はSuiteCRM 7.4.3を使用しており、プロジェクトインスタンス全体に2つのファイル(PHPファイルとJSファイル)を含める必要があります。この状況でのベストプラクティスは何ですか?どこでソースファイルをコピーすればいいですか?どこにコピーしますか?SuiteCRMにPHPとJSファイルを含める

+0

これらのファイルを追加する理由は何でしょうか?あなたは機能を拡張していますか?つまり、logic_hooksを追加しているのですか、JSをSuiteCRMインスタンス全体に含めるだけですか? – MissAran

+0

@MissAranペルシア語でこの[JalaliDate](https://github.com/sallar/jDateTime)を使用します。 –

+0

コンポーザーをphpに、bower/npmをJSライブラリー用に使用します。 – k0pernikus

答えて

3

SuiteCRMは独自のTimeDateクラスを使用しています。このクラスは、独自の(このJalaliDate)を作成するために拡張する必要があります。正直なところ、SuiteCRMのコアに大きな影響を与えずにこれをどのように実装できるかはわかりません。

しかし、あなたが見なければならないファイルは、Include/TimeDate.php(これはSuiteがすべての時間形式に使用するクラスです)です。常にアップグレードのすべてを安全なものにすることをお勧めします。つまり、すべてがカスタムフォルダ内にありますが、この外観からは見えません。

しかし、他のアプリケーションのSDKをインクルードするときに私が通常行うことは、カスタム/インクルード/に配置し、必要なときはいつでもそこからリンクします。

+0

ありがとう。私はカスタムフォルダで作業し、その結果をあなたに知らせることを試みます。 –

0

javascriptファイルSuiteCRMを使用する必要がある場合は、「スクリプトタグ」を吐き出すカスタムビューを作成することができます。

class CustomModuleViewSomething extends ViewEdit 
{ 
    function display(){ 
     $this->ev->process(); 
     $scripts = array(); 
     $scripts[] = '<script src="javascript1.js"></script>'; 
     $scripts[] = '<script src="javascript2.js"></script>'; 
     $scripts[] = '<script src="javascript3.js"></script>'; 
     echo $this->ev->display($this->showTitle) . implode($scripts); 
    } 
} 

私は、JSで日付を処理するためにmoment.jsに依存する要点を持っています。これは、クライアント側の日付に処理日が必要な場合に便利です。

/** 
* returns js Date() from a date that is in the users format 
* @depends momentjs library 
* @param datestr 
* @returns {*|Date} 
*/ 
function toDate(datestr) { 
    var $format = "", $splitformat = ["","",""], $dbformat = ["","",""]; 
    // Get user preferences date format 
    $format = cal_date_format 
    $format = $format.toUpperCase(); 
    $format = $format.replace('%D', 'DD') 
    $format = $format.replace('%M', 'MM') 
    $format = $format.replace('%Y', 'YYYY') 

    // return js date 
    return moment(datestr, $format).toDate() 
} 

日付を処理するためのより良い方法はcustomControllerでアクションを作成することです:

class CustomModuleController extends SugarController { 
    function action_save() { 
     global $timedate; 
     $field = "date_entered"; 
     $timedate->fromString($this->bean->$field); 
     $this->bean->save(!empty($this->bean->notify_on_save)); 
    } 
} 
関連する問題