Magento

Magento eコマースプラットフォームのユーザー向けのQ&A

2
Magento 2:仮想型プラグイン
プラグインに関するMagento 2のドキュメントに混乱しています。 それは最初に言われた: プラグインは仮想タイプでは使用できません しかし、それはそれは言われています: プラグインが監視するタイプ名として、クラス、インターフェース、または仮想タイプを指定できます 何か不足していますか、それともドキュメントがそれ自体と矛盾していますか?仮想タイプのプラグインを作成できますか?

6
Magento 2のカスタムモジュールにアクセスしようとすると404ページが見つかりませんというエラー
ベンダーフォルダー内に2つのカスタムモジュールを作成しました。これは私のレイアウト構造です。 -app -code -Company -Blog -HelloWorld -Controller -Hello -World.php -registration.php -etc -module.xml -frontend -routes.xml どちらも有効です。 これはroutes.xmlHelloWorldモジュールの私のコードです。 <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="standard"> <route id="helloworld" frontName="helloworld"> <module name="Company_HelloWorld"/> </route> </router> </config> これは私のコードですmodule.xml: <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> <module name="Company_HelloWorld" setup_version="1.0.0"> </module> </config> これは私のregistration.phpファイルです: <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Company_HelloWorld', __DIR__ ); これは私のコントローラーコードです: …

2
Contextオブジェクトをモックする方法
次のように、コンテキストオブジェクトを含むモジュールをテストしようとしています。 public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Catalog\Model\Product\ImageFactory $productImageFactory, \Magento\Framework\View\Asset\Repository $assetRepo, \Magento\Framework\View\ConfigInterface $viewConfig, ProductRepository $productRepo ) { parent::__construct($context, $productImageFactory, $assetRepo, $viewConfig); $this->productRepo = $productRepo; } 単体テストを実行すると、次のエラーメッセージが表示されます。 PHPUnit_Framework_Error : Argument 1 passed to Magento\Catalog\Model\Product::__construct() must be an instance of Magento\Framework\Model\Context, none given, called in ... このオブジェクトのモックを作成したり、このエラーを修正するにはどうすればよいですか?

1
schema_versionとデータバージョンが異なるのはいつですか?
たとえば、私のモジュールにセットアップスクリプトがない場合setup_version、module.xmlファイル内のタグを無視できますか。 m1に自動的にインストールされるモジュールでは、最初にエラーがスローされます(セットアップアップグレードコマンドを実行しない場合)。セットアップアップグレードを手動で実行する必要があるのはなぜですか? どのようなシナリオであるschema_versionとdata_version違うのでしょうか? setup_moduleテーブルのほとんどのレコードに同じ値が含まれていることがわかりました。

1
ObjectManagerファクトリの違いは何ですか?
Magento 2には3つのファクトリークラスがあることがわかります(抽象クラ​​スを数えると4)。 \ Magento \ Framework \ ObjectManager \ Factory \ Dynamic \ Developer \ Magento \ Framework \ ObjectManager \ Factory \ Dynamic \ Production \ Magento \ Framework \ ObjectManager \ Factory \ Compiled 上記のすべてが拡張され\Magento\Framework\ObjectManager\Factory\AbstractFactoryます。 開発者モードではDeveloperファクトリーが使用されると想定していましたが、場合によってはファクトリーが使用され、Compiled条件を特定できません。 各工場がいつ使用されるのか、それらの違いは何ですか?


3
Magento 1:なぜいくつかのオブザーバーメソッドがgetEvent()を呼び出し、一部は呼び出さないのですか?
最近気づいたこと、それについて知りたいです。 例1:の使用 getEvent() ではMage_Core_Model_LocaleではsetLocale()この方法、イベントが送出されます。 Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this)); このイベントのためのオブザーバーがあるbindLocale()からMage_Adminhtml_Model_Observer public function bindLocale($observer) { if ($locale=$observer->getEvent()->getLocale()) { if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) { $locale->setLocaleCode($choosedLocale); } } return $this; } ご覧のとおり、ロケールを取得するには、最初getEvent()にオブザーバーを呼び出します。 例2:なし getEvent() ではMage_Wishlist_Block_Customer_Wishlist_Item_Optionsでは__construct()この方法、イベントが送出されます。 Mage::dispatchEvent('product_option_renderer_init', array('block' => $this)); したがって、例1と2に同じ構文を使用することに同意します。 しかしながら、この第二例えば観察者があるinitOptionRenderer()からMage_Bundle_Model_Observer public function initOptionRenderer(Varien_Event_Observer $observer) { $block = $observer->getBlock(); $block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration'); return $this; } ご覧のとおり、ブロックを取得するためgetEvent()に、オブザーバーを呼び出しません 質問 …

3
私のmagento管理ダッシュボードのログインURLとは
最近Webにmagentoをインストールしましたが、ログインを覚えていません これらのリンクは機能せず、スローされます おっと、私たちの悪い... リクエストされたページは見つかりませんでした。その理由は明らかです。 URLを直接入力した場合は、スペルが正しいことを確認してください。 ここにアクセスするためのリンクをクリックした場合、リンクは古くなっています。 http:// localhost:8888 / Magento / admin http:// localhost:8888 / Magento / index.php / admin http:// localhost:8888 / Magento / administrator http:// localhost:8888 / Magento / index.php / administrator MacヨセミテでMAMPを使用していますが、app / etcにlocal.xmlはありませんが、di.xmlはあります。前もって感謝します


2
catalog_product_save_afterとcatalog_product_save_commit_afterの違いは?
誰もがこれらのイベントの違いを説明できますか。早くて汚いだけです。ありがとうございました。 私はそのようなオブザーバーメソッドを持っています: public function detectProductChanges($observer) { $product = $observer->getProduct(); $old = $product->getOrigData(); $new = $product->getData(); if ($product->hasDataChanges() && $old['status'] == 1 && $new['status'] == 2) { $this->_sendStatusMail($product); } } に到達していません sendStatusMail() 私はイベントにフックしています: <events> <catalog_product_save_after> <observers> <productchange> <type>singleton</type> <class>A_ProductNotification_Model_Observer</class> <method>detectProductChanges</method> </productchange> </observers> </catalog_product_save_after> </events> 私は使用する必要があります: catalog_product_save_commit_after ゴール: 製品が無効になった後にメールを送信します。 private function _sendStatusMail($product) …

3
SSH /パテ経由でマジェントを再インデックスする
私は経由で私のMagentoのinstllationにログインしたssh/putty私は、走った、cd public_html私のルートフォルダに取得した後、次のコマンドを実行しています: php indexer.php --reindex catalog_product_attribute しかし、何も起こりません。 ません。「indexer.phpが見つかりませんでした」。 私は内部で見てきたpublic_htmlcPanelの中にフォルダやという名前のファイルが存在しないindexer.phpだけで、index.phpとはindex.php.sample。 誰か助けてもらえますか?

2
magento2が使用するzendコンポーネントは何ですか?
Magento2はzend framewok 1、zend framework 2、symfonyなどを使用しています。 zend framewok 1から取得したコンポーネントとzend framewok 2から取得したコンポーネントについて教えてください。 例えば: Zend_Db(zend 1から) Zend_Json(zend 2から) Zend_mvc(Zend 1から) 等 また、各フレームワークからのパーセント(正確にはわかりません。私は難しいことを知っています) 例えば: zend framewok 1:45% zend framewok 2:25% symfony:30% update:composerを通じて、magentoを使用しているコンポーネントを特定できません。 例:symfony / configまたはzend / config(両方のコンポーネントがcomposerに存在していました)

2
magento 2の単体テストのオブジェクトマネージャーを使用してScopeConfigInterfaceを取得する方法
ユニットテストの行をmagento 2データベースのcore_config_tableから読み取ろうとしています。このリンクを読んだので、この仕事を成し遂げることを知っています 。私は使用する必要があります: \Magento\Framework\App\Config\ScopeConfigInterface 使って: \Magento\Framework\TestFramework\Unit\Helper\ObjectManager これが私のコードです: protected function setUp() { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->scopeConfig = $objectManager->getObject('\Magento\Framework\App\Config\ScopeConfigInterface'); } public function testgetImageCDNConfigValue() { $this->scopeConfig->getValue($this->path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE); if ($this->scopeConfig == null) { $this->assertFalse(true); } else { $this->assertTrue(true); } } testObjectを使用して必要なすべてのオブジェクトを取得できますが、取得したい\Magento\Framework\TestFramework\Unit\Helper\ObjectManagerときはいつでも\Magento\Framework\App\Config\ScopeConfigInterface 致命的なエラー:C:\ xampp \ htdocs \ magento \ vendor \ magento \ framework …


2
ブロックを書き換えるときにMagento2でテンプレートを書き換える必要がありますか?
この質問は、Magento2のベストプラクティスに従うことです。 要素の周りにラッパーを追加するために、\ Magento \ Theme \ Block \ Html \ Topmenu :: _ addSubMenu()メソッドを書き換える必要がありました。今、それは保護された方法なので、私の理解は設定機能を使わなければならないということです: <preference for="Magento\Theme\Block\Html\Topmenu" type="MyCompany\Theme\Block\Html\Topmenu" /> そして私の書き換えでクラスを追加します: <?php namespace MyCompany\Theme\Block\Html; class Topmenu extends \Magento\Theme\Block\Html\Topmenu { protected function _addSubMenu($child, $childLevel, $childrenWrapClass, $limit) { // my stuff } } デフォルトのクラスは書き直されましたが、次のページのリロードで次のエラーが発生しました: main.CRITICAL:無効なテンプレートファイル:モジュールの 'html / topmenu.phtml': 'MyCompany_Theme'ブロックの名前: 'catalog.topnav' [] [] MagentoはMagento_Themeではなく、私の拡張機能の下でhtml / …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.