Как конвертировать автономные файлы PHP в MVC Magento

У меня есть задача конвертировать автономные файлы PHP в MVC Magento. Эти файлы PHP были созданы другим разработчиком. Код в файле PHP обращается к базе данных, преобразует результат в формат JSONP и передает его разработчику интерфейса.

Я не знаю MVC Magento. Является ли эта задача преобразования похожей на модули в app/code/core/Mage в папке Magento? Как я могу это сделать? Является ли magento MVC таким же, как PHP MVC?

Я включаю файл php, который мне нужно преобразовать в Magento MVC. Так вам будет легче понять ..

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

Итак, как я могу преобразовать этот файл в стиль MVC Magento? Это необходимо для преобразования этого файла в magento MVC?

Related of "Как конвертировать автономные файлы PHP в MVC Magento"

Я думаю, что они просят вас сделать, это преобразовать код, похожий на

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

В Magento MVC (модуль)

 \app\code\local\MyNamespace 

Если вы новичок в ООП, посмотрите здесь: http://www.php.net/manual/en/language.namespaces.rationale.php

 \app\code\local\MyNamespace\Appname 

Название нового настраиваемого модуля – старайтесь сохранить хотя бы первый буквенный капитал, или там БУДЕТ ПРОБЛЕМА с пониманием Magento

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

В классической архитектуре MVC это представляет собой View часть MVC

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

Это довольно легко понять, если нет, получайте удовольствие: http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

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

Содержит наиболее значительную часть архитектуры MVC Magento – поле 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/

Интересный вопрос. ИМХО, вы уже в том положении, что я относился к Magento некоторое время назад. Для написания и использования запросов mySql к базе данных Magento ничего не требуется из модели MVC. В нашем мире я называю эти файлы вуду. Я создаю инструменты для своих сотрудников с очень конкретными целями и не опубликованными URL-адресами. Вы можете поместить их в любую файловую систему, просто убедитесь, что имя каталога и имя файла не имеют никакого волшебного значения в Magento, или вы можете случайно отключить некоторые функции. Мой инструмент отчетности о налогах с продаж точно так же, как и ваш, где вы открываете соединение с базой данных mySql и делаете прямые, ручные запросы против него.

Ответ RS – отличный пример для входа в MVC. Я начал использовать его для своих инструментов Voodoo. Выполняя запросы «Путь Magento» через их контроллеры, вы можете сделать информацию из EAV намного проще, чем пытаться собрать информацию по ручным запросам, потому что инфраструктура уже закодирована для вас. Примером является информация о клиенте! Я выяснил запросы по налогу с продаж (что не было небольшим обязательством), но получение полного имени, адреса и электронной почты было абсурдным.

Я создал инструмент экспорта, который выводит данные JSON. Затем я CURL его с сервера на работе, чтобы хранить продажи в базе данных mysql. Оттуда они импортируются в быстрые книги. Этот инструмент экспорта заказов – это 100% объекты Magento, как из приведенного ниже примера.

Вот код, который я использовал в моем инструменте информации о клиентах Voodoo:

 // 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("Ym-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); } по // 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("Ym-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); } 

Я большую часть своего обучения изучаю Google, пробную версию и ошибку; поэтому, пожалуйста, подумайте, что «мой путь» – это просто тот, который работает для меня и, вероятно, все еще не самый лучший или простой способ. Кроме того, я до сих пор не совсем понимаю, как работают некоторые из этих объектов, поэтому отлаживается вывод, который закомментирован.

Моим советом было бы не пытаться слишком усердно сделать что-то для «frontend», стоящего перед клиентом. Получение страниц для показа и правильной работы в Magento – это жалкое впечатление. Если вы можете сделать скрытые скрытые инструменты voodoo, попробуйте сделать это. Если вы вынуждены создать модуль, есть несколько десятков шагов за шагом, которые помогут вам в Интернете.