2016-08-07 11 views
0

OpenCartに接続されていないスクリプトを介して製品を追加したいと考えています。OpenCartカスタムPHPスクリプトに製品を追加

たとえば、somedir/index.phpです。私はこの方法でそれをしようとします:

$productData = array(
    'model' => 'ABC123', 

    'name'=>'aaa', 
    'description'=>'aaa', 
    'tag'=>'aaa', 
    ... 
); 

require_once ('../../system/engine/model.php'); 
require_once ('../../admin/model/catalog/product.php'); 

$a= new ModelCatalogProduct(); 
$a->addProduct($productData); 

しかし、トリガする必要がある多くの機能があります。これはどのように達成できますか?

答えて

0

OpenCartは、いわゆるMVCパターンを使用します。このパターンは、OpenCartの中で非常に特殊化され、深く結合された方法で動作します。したがって、コード内でコントローラとモデルを使用する場合は、ルーティングシステムのコンテキストが必要です。

また、どのバージョンを使用しているか、どのようなセマンティクスが正しいのか、実際には分かりにくいです。概念的には、あなたがこのようなものだろう: を - /管理/コントローラのディレクトリ構造、すなわち/admin/controller/tool/product_import.phpは

  • コールコントローラを拡張し、そのコントローラのControllerToolProductImportに新しいcontollerを定義します。
  • public function index()を作成します。
  • $ this-> load-> model( "catalog/product")のようなモデルをロードしましたか?
  • 今モデルの機能が利用可能になると、あなたは(あなたが一度管理セクションにログインし、トークンがどうあるべきかがわかります)このパブリック関数インデックスはhttps://hostname:port/admin/index.php?route=too/product_import&token=ABCによってtriggerdすることができ$this->model_catalog_product->addProduct($productData);
  • のようにそれを使用します。そのコントローラー内の別の機能を直接起動するには(パブリックにする必要があります)、ルートを簡単に拡張できます。したがって、public function doSomething()の場合はhttps://hostname:port/admin/index.php?route=too/product_import/doSomething&token=ABCになります。
  • この機能を管理セクション内から起動するときは、OpenCart関数を使用します。お使いのバージョンによっては、これは2.2.0.0のために、このように行くだろう:

    ​​

関連する問題