こんにちは
先週、 SDKのオープンを発表し、アプリケーションの作成プロセスを説明する番になりました。
Finoboxのアプリケーションは、契約書や文書の作成、見積もりとレポート、財務データの分析とプロットなど、非常に多様です。
SDKを使用するphp開発者は、独自のアプリケーションを作成してFinoboxに配置し、このアプリケーションをユーザーに販売することで利益を得ることができます。
この投稿では、CSVファイルから財務データをインポートするアプリケーションの作成について説明します。
1.料理
開発者センターから、 SDKの最新バージョンをダウンロードし、Webサーバーに解凍します。 すべてがそのままで機能するはずです。パスや構成を構成する必要はありません。
Storeフォルダーには、すべてのアプリケーションが含まれています。 これまでのところ、ここでは、たとえばアプリケーションと空のMyNewApplicationを見つけます。 空白に基づいて、この記事でアプリケーションを作成します。
フォルダーの名前は、ファイルの名前とアプリケーションクラスの名前と一致する必要があります。 アプリケーションにCSVImportという名前を付けましょう。 ファイルに記述されているファイル、フォルダー、およびクラスの名前を変更します。
ファイル構造は次のとおりです。
description.xmlファイルを編集します。
< application >
< name > CSV </ name >
< descr > CSV </ descr >
</ application >
何が起こったのか見てみましょう:
SDKヘルプ:アプリケーションの仕組み
2.インターフェースを作成する
そのため、アプリケーションはユーザーからファイルを受け取り、現在のパネルの支払いで検出されたすべてのエントリを追い越す必要があります。 このタスクのために、インターフェースにはファイル入力と開始ボタンがある単一のウィンドウがあります。
しかし、私たちは反対に行き、アプリケーションを「双方向」にします-2番目のステップでは、支払いに磨きをかける前に、アプリケーションがダウンロードしたデータをどのように理解するかをユーザーに示します。
したがって、CSVImportアプリケーションクラスには、2つのウィンドウを作成するmainとstep2、およびデータインポート操作を実行するインポートの3つのメソッドがあります。
<?php
class CSVImport extends Application{
function main(){
// HTML
$ this ->setResultType(self::$RESULT_HTML);
}
function step2(){
// HTML
$ this ->setResultType(self::$RESULT_HTML);
}
function import(){
//
$ this ->setResultType(self::$RESULT_CLOSE_N_RELOAD);
}
}
?>
2.1ファイルダウンロードウィンドウ
フォームインターフェイスを構築するには、フォームデザイナーを使用します。
SDKヘルプ:フォームデザイナー
function main(){
$form = $ this ->startUIForm();
//
$form->add(
FormElement::factory( 'FileInput' , 'csvfile' )
->setLabel( ' CSV ' )
);
$form->add(
FormElement::factory( 'StaticInput' )
->addAttribute( 'class="notice"' )
->setValue( ' " " ' )
);
// step2 ,
$ this ->setResultType(self::$RESULT_HTML);
return $ this ->finalizeUIForm($form, 'step2' , ' ' )->getHtml();
}
最初のステップでのアプリケーションのタイプ:
2.2フォーマット確認ウィンドウ
ファイルをアップロード(またはアンロード:))。 それを確認して、テーブルの最初の10エントリを表示しましょう。 このウィンドウのコードをビルドするには、テンプレートエンジンを使用します。 テンプレートをcsvtable.phpという名前のアプリケーションフォルダーに配置します。 また、転送中にダウンロードしたファイルへのパスを転送します。
SDKヘルプ:テンプレート
function step2(){
$file = $_FILES[ 'csvfile' ];
/**
*
*/
if ($file[ 'error' ] != 0)
throw new Exception( ' ' );
if ( ($file[ 'type' ] != 'text/plain' ) && ($file[ 'type' ] != 'text/csv' ))
throw new Exception( ' ' );
/**
* 10
*/
$limit = 10;$strings = array();
$fhandle = @fopen($file[ 'tmp_name' ], 'r' );
if ($fhandle === false ) throw new Exception( ' ' );
while (!feof($fhandle)){
$strings[] = fgets($fhandle);
if (--$limit < 0) break ;
}
fclose($fhandle);
$ this ->setResultType(self::$RESULT_HTML);
//
return $ this ->renderTemplate( 'csvtable.php' , array( 'csv' => $strings, 'filename' => $file[ 'tmp_name' ]));
}
2番目のステップでのアプリケーションのタイプ:
2.3データのインポート
フォーマットを確認した後、ファイルを調べて新しい支払いを作成するだけです。 実験のために、「ラトル」サービスのエクスポートCSVファイルを使用します。 形式は次のとおりです。
1フィールド(ゼロインデックス)-支払いのカテゴリ。 finoboxの概念では、これはラベルです。
3-支払い日
4-支払いの名前、コメント
7-金額
SDKヘルプ: ファイルのダウンロードと支払いの作成
function import(){
$fhandle = @fopen($_POST[ 'csvfile' ], 'r' );
if ($fhandle === false ) throw new Exception( ' ' );
while (!feof($fhandle)){
$row = iconv( 'CP1251' , 'UTF-8' , fgets($fhandle));
$row = str_replace( '"' , '' , $row);
$entry = explode( ';' , $row);
if (count($entry) > 1){
$payment = new Entry();
$payment->name = $entry[3];
// , ,
$payment->currency_id = $ this ->userPreferences->defaultCurrency;
$payment-> value = $entry[6];
$payment->paiddate = $entry[2];
$payment->tags = $entry[0];
//
$ this ->entriesData->insert($payment);
}
}
fclose($fhandle);
//
unlink($_POST[ 'csvfile' ]);
//
$ this ->setResultType(self::$RESULT_CLOSE_N_RELOAD);
return ;
}
注:SDKモードでは、支払いの更新および追加の機能はデータファイルを変更しません。つまり、データがテストデータベースにインポートされた後、それらは変更されなくなります。 正常に機能するサービスでは、すべてが正常に機能します。
3.アプリケーションをストアに送信する
アプリケーションの準備ができました。リボンで包帯を巻いてアイコンを提供し、価格を設定し、デベロッパーセンターに検討するために送信するだけです。
このようなファイルをFinobox.ruにインポートするための既製のアプリケーションは、 ここに接続できます
* Source Code Highlighter .