0

スタンドアロンの PHP ファイルを Magento の MVC に変換するタスクがあります。これらの PHP ファイルは、別の開発者によって作成されました。PHP ファイルのコードはデータベースにアクセスし、結果を JSONP 形式に変換してフロントエンド開発者に転送します。

Magento の MVC についての知識はありません。app/code/core/Mageこの変換タスクは、Magento フォルダー内のモジュールに似ていますか?? これどうやってするの?Magento MVC は PHP MVC と同じですか?

Magento MVC に変換する必要がある php ファイルを含めています。そうすれば分かりやすくなりますので。。

<?php header('content-type: application/json; charset=utf-8');
$link = mysqli_connect("localhost", "db_username", "password", "db_dbname");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$pid = $_REQUEST['prodid'];

/* Select queries return a resultset */

$result = mysqli_query($link, "SELECT round(rating_summary / 20) AS search_rating FROM review_entity_summary where store_id = 1 and entity_pk_value=" . $pid);

// printf("Select returned %d rows.\n" . "<br>\n", mysqli_num_rows($result)) . "<br>\n";
//$string = $_REQUEST['varname'];
    $rows = array();
  /*  while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }*/
//while($r = mysql_fetch_assoc($result)) {
while ($r = mysqli_fetch_assoc($result)) {
    $rows = $r;
//print_r ($rows) . "<br>\n";
}
$json_data = json_encode($rows);
print_r ($json_data);
    /* free result set */
   // mysqli_free_result($result)

mysqli_close($link);
?>

では、このファイルを Magento の MVC スタイルに変換するにはどうすればよいでしょうか?? これは、このファイルを magento MVC に変換するために必要ですか?

4

2 に答える 2

1

彼らがあなたに求めているのは、次のようなコードを変換することだと思います

require_once 'path/to/magento'. "/Mage.php";
umask(0);
Mage::app("default");
....

Magento MVC へ (モジュール)

\app\code\local\MyNamespace

OOP を初めて使用する場合は、こちらをご覧ください: http://www.php.net/manual/en/language.namespaces.rationale.php

\app\code\local\MyNamespace\Appname

新しいカスタム モジュールの名前 - 少なくとも最初の文字を大文字にするようにしてください。そうしないと、Magento の理解に問題が生じる可能性があります

\app\code\local\MyNamespace\Appname\Block

従来の MVC アーキテクチャでは、これは MVC の View 部分を表します

\app\code\local\MyNamespace\Appname\controllers

これはかなり理解しやすいですが、そうでない場合は楽しんでください: http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

\app\code\local\MyNamespace\Appname \etc

Magento の MVC アーキテクチャの最も重要な部分である、すべてのものを接続する xml フィールドが含まれています。

\app\code\local\MyNamespace\Appname\Helper

反復可能なルーチンまたは単純な手続き型メソッドを含むファイルを対象としています

 \app\code\local\MyNamespace\Appname\Model

コントローラーの場合と同じです。上記のリンクをご覧ください

 \app\code\local\MyNamespace\Appname\sql

カスタム データベース テーブルを定義し、拡張機能のアップグレードを処理するためのものです。

 \etc\modules

Magento に含まれるすべてのモジュールが含まれています - ここからモジュールのすべてが実際に始まります

http://inchoo.net/ecommerce/magento/basic-folder-structure-for-new-magento-module/を参照してください

于 2013-02-07T14:34:32.730 に答える
0

興味深い質問です。私見、あなたは少し前にマジェントに関して私がいた立場にいます。Magento データベースに対して mySql クエリを作成して使用するには、MVC モデルから何も必要としません。私たちの世界では、これらをブードゥー ファイルと呼んでいます。非常に具体的な目的と非公開の URL を使用して、スタッフ向けのツールを作成しています。ファイル システムのどこにでも配置できますが、ディレクトリ名とファイル名が Magento 内で魔法のような意味を持っていないことを確認してください。私の売上税レポート ツールは、mySql データベースへの接続を開き、それに対して直接手動でクエリを実行する、あなたのものとまったく同じです。

RS の回答は、MVC を理解するための優れた入門書です。ブードゥーツールにも使い始めました。コントローラーを介して「Magento 方式」でクエリを作成すると、インフラストラクチャが既にコード化されているため、手動クエリを介して情報をまとめようとするよりも、EAV から情報を取得する方がはるかに簡単になります。一例は顧客情報です!私は売上税の問い合わせを考え出した (これは小さな仕事ではなかった) が、完全な名前、住所、電子メールを取得するのはばかげていた。

JSONデータを出力するエクスポートツールを作成しました。次に、職場のサーバーから CURL を実行して、売り上げを mysql データベースに保存します。そこから、クイックブックにインポートされます。この注文エクスポート ツールは、以下の例のような 100% Magento オブジェクトです。

ブードゥー顧客情報ツールで使用したコードは次のとおりです。

// this limits access to the page to this IP address, perhaps your office?
    $remote_host_ip='198.75.43.24';
if( $_SERVER['REMOTE_ADDR'] != $remote_host_ip ){
    $error[ date("Y-m-d_H:i:s") ]="\$_SERVER['REMOTE_ADDR'] is ".$_SERVER['REMOTE_ADDR']." which is not the office ip! $remote_host_ip\n";
}
// from: http://fishpig.co.uk/blog/direct-sql-queries-magento.html
require_once '/home/(your host username)/public_html/app/Mage.php';
// from: http://stackoverflow.com/questions/7145373/magento-fatal-error-call-to-a-member-function-getmodelinstance-on-a-non-obje/7145570#7145570
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$userModel = Mage::getModel('admin/user');
$userModel->setUserId(0);
// from: http://www.magentocommerce.com/boards/viewthread/297092/
$_dealers = Mage::getModel('customer/customer')
    ->getCollection()
    ->addFieldToFilter('group_id', array(6,5,3)) 
    //  ->addFieldToFilter('group_id', 6) 
    ;
// print_r($_dealers);
$dealers=Array();
foreach( $_dealers as $id => $obj){
    // $info=$obj->load();
    // print_r($info);
    // from: http://www.42droids.co.uk/magento-get-customer-and-address-details
    $customerAddressId=$obj->getDefaultBilling();
    $address = Mage::getModel('customer/address')->load($customerAddressId);
    $_addr=$address->format();
    $addr.=",".$address->telephone;
    $addr.=",".$obj->email;
    echo "$addr\n"; //var_dump($addr);
}

私はほとんどの学習をグーグル、試行錯誤で行っています。したがって、「私のやり方」は単に私にとってうまくいく方法であり、おそらくまだ最良または最も簡単な方法ではないことを考慮してください. また、一部のオブジェクトがどのように機能するかをまだ完全には理解していないため、デバッグ出力はコメントアウトされています。

私のアドバイスは、顧客に面している「フロントエンド」のために何かを作るために一生懸命努力しないことです. Magento でページを正しく表示して動作させることは、悲惨な経験です。卑劣な隠されたブードゥー教のツールを実行できる場合は、それを試してください。モジュールを作成する必要がある場合は、ネット上に手順を追ったハウツーが数十個あります。

于 2013-02-08T20:35:54.563 に答える