タグ付けされた質問 「code-generation」

2
Magento2は特定のExtensionFactoryおよびExtensionAttributeInterfaceをどのように生成しますか?
引用アイテムなどの拡張属性を使用して、頭を包み込みたいと思います。 Magento 1のようなセットアップクラスを使用して、このようなエンティティにカスタム属性を追加しても問題ありません。これはこの質問の目的ではありません。 現時点では、エンティティAPIを介して拡張機能によって拡張属性として追加されたこのような属性を公開したいときに、この魔法に圧倒されます。 更新:通常のファクトリがどのように生成されるかを知っています。この質問は、生成された拡張属性インターフェースの生成された実装をインスタンス化する特別なファクトリーに関するものです。 これを機能させるために私がとるステップは次のとおりです。私はこれらを追加するので、答えようとする人は誰でもそれらの詳細に入る必要はありません。 私の質問はどのようにか、なぜそれが動作します。 エンティティAPIを介して拡張属性を公開する手順: etc/extension_attributes.xmlエンティティインターフェイスに属性を追加するを作成します エンティティExtensionAttributesインスタンスに属性値を追加するプラグインを作成します。 2番目のポイントを実行するには、エンティティExtensionAttributesインスタンスが必要です。このため、プラグインはファクトリに依存します。ファクトリは、オブジェクトマネージャがDIを介して提供します。 見積品目の例Magento\Quote\Api\Data\CartItemExtensionFactoryを使用する必要があります。 私はこの工場のタイプが何らかの形で生成魔法の引き金になっているに違いないと思います。 その後、Magentoは\Magento\Quote\Api\Data\CartItemExtensionInterface、すべての拡張属性のセッターとゲッターとの一致するインターフェースを生成します。 ただし、そのインターフェイスの具体的な実装は生成されないようです。少なくともPHPStormはそれを見ていません。 Magentoは、クラスを生成するために必要な情報をどのように収集しますか?生成されたインターフェイスメソッドは、具体的なインスタンスでどのように呼び出すことができますか?メモリのみで生成されるクラスですか? 私はそれが機能することを嬉しく思いますが、それは本当に満足のいくものではありません。拡張機能によって自動的に作成された属性を使用するMagentos機能は、その成功の重要な要因の1つです。モジュール開発者として、プロセス全体を完全に理解する必要があると思います。 時間があれば、自分でこれを掘り下げたいと思いますが、説明が得られればいいと思います。 UPDATE 2:通読するために少し時間がかかった\Magento\Framework\Api\Code\Generator\ExtensionAttributesInterfaceGeneratorと\Magento\Framework\Api\Code\Generator\ExtensionAttributesGenerator。今、私は少なくとも何が起こっているのか大まかな考えを持っています。誰も私に勝てない場合、私はそれが有用な参考になると思うので、ある時点で完全なプロセスの説明を書きます。

14
Magento 2は、コードをコンパイルするときにメモリ不足エラーを許可
モジュールを追加するとエラーが発生します。 Magentoのコンパイルコマンドを再実行してください だから私はコマンドの下で実行しますが、ルートからコマンドを実行すると以下のエラーも表示されます php magento setup:di:compile Compilation was started. %message% 0/7 [>---------------------------] 0% 1 sec 37.0 MiB%message% 0/7 [> ---------------------------] 0% 1 sec 37.0 MiBProxies code generation... 0/7 [ >---------------------------] 0% 1 sec 37.0 MiB Proxies code generation... 1/7 [====>-----------------------] 14% 47 secs 43.5 MiB Repositories code generation... 1/7 [====>-----------------------] …

3
Magentoのアップグレード後のエラー
CLIでこのコマンドを実行した後 php bin/magento setup:upgrade エラーが発生しています-: Fatal error: Uncaught exception 'Magento\Framework\Exception\LocalizedException' with message 'Can't create directory /var/www/html/magento/magento2.0/var/generation/Magento/Framework/App/ResourceConnection/.' in /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Generator.php:103 Stack trace: #0 /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Generator/Autoloader.php(35): Magento\Framework\Code\Generator->generateClass('Magento\\Framewo...') #1 [internal function]: Magento\Framework\Code\Generator\Autoloader->load('Magento\\Framewo...') #2 [internal function]: spl_autoload_call('Magento\\Framewo...') #3 /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Reader/ClassReader.php(19): ReflectionClass->__construct('Magento\\Framewo...') #4 /var/www/html/magento/magento2.0/vendor/magento/framework/ObjectManager/Definition/Runtime.php(44): Magento\Framework\Code\Reader\ClassReader->getConstructor('Magento\\Framewo...') #5 /var/www/html/magento/magento2.0/vendor/magento/framework/ObjectMana in /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Generator.php on line 103`

2
Magento2のMagento2ファクトリーパターンの利点1
Magento 2は、注射不可のファクトリクラスを使用しています。 たとえば製品クラス:ProductFactory たとえば顧客クラス:CustomerFactory 私はここで工場パターンのタイプが何であるか理解できませんか? 1つのファクトリクラスに関連付けられている各クラスのため。私はその何かが重複していると考えています。 なぜ私たちはのための抽象工場作成するべきではないCustomerFactory、ProductFactoryなど? また、たとえば: 私たちは、渡すことができますAbstractFactoryタイプのチェックのための代わりProductFactoryにProductRepositoryクラスのコンストラクタ。 したがって、ProductRepositoryとの間の密結合を避けることができますProductFactory 抽象ファクトリークラス: namespace Magento\Framework\ObjectManager\Code\Generator; /** * Abstract Factory class */ abstract class AbstractFactory { /** * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface */ protected $_objectManager = null; /** * Instance name to create * * @var string */ protected $_instanceName …

2
コメントで「#@ +」と「#@-」の文字列は何を意味しますか?
Magento 2のいくつかのクラスのコメントには、多くの「#@ +」と「#@-」の文字列があります。 \Magento\Customer\Api\Data\AttributeMetadataInterface interface AttributeMetadataInterface extends \Magento\Framework\Api\MetadataObjectInterface { /**#@+ * Constants used as keys of data array */ const ATTRIBUTE_CODE = 'attribute_code'; ... const IS_SEARCHABLE_IN_GRID = 'is_searchable_in_grid'; /**#@-*/ ... } これらのマーカーの目的は何ですか?

11
「setup」名前空間に定義されているコマンドはありません:Magento 2
をインストールしましたがlatest version of Megento 2、すべてがフロントエンド、バックエンド、機能で正常に動作しています。 私はとの1つの問題持って bin/magento setup:upgrade、私はターミナルで次のコマンドを実行したとき、私は例外の下に取得するには、コマンドを。 [InvalidArgumentException] 「setup」名前空間に定義されているコマンドはありません。 スクリーンショット: インストール中に見逃したことはありますか、それを機能させるためにパッケージをインストールする必要がありますか?

1
いつ、どのようにphtmlテンプレートがview_preprocessedで生成されますか?
でvar/view_preprocessed/html、コアモジュールから、およびカスタムモジュールから、多くのphtmlファイルが生成されています。これらはすべて空白が削除された使用済みテンプレートのようです。 Alan KentがGruntでMagento 2 phtmlファイルを更新するにはどうすればいいですか?: PHTMLファイルを「展開」することはありません。これらは、レイアウトファイルのブロックによって参照され、サーバー側で処理されます。したがって、「うなり声」はここでは関係ありません。また、静的コンテンツの展開も同様に関係ありません。 また、静的コンテンツの展開と不快なワークフローを分析したところ、テンプレートに関連するものは何も見つからなかったため、これはまだ当てはまると思います。 しかし、これらのファイルはいつ生成されますか?そして実際にそこで何が起こっているのか、そしてその理由は?

4
Magento 2ですべてのキャッシュを削除した後のエラー
すべてのキャッシュを削除すると rm -rf var/cache/* var/page_cache/* var/view_preprocessed/* var/generation/* エラーが発生しました Warning: ltrim() expects parameter 1 to be string, object given in vendor\magento\framework\Code\Generator\EntityAbstract.php on line 152 Notice: Uninitialized string offset: 0 in vendor\magento\framework\Autoload\ClassLoaderWrapper.php on line 81 Notice: Uninitialized string offset: 0 in vendor\composer\ClassLoader.php on line 317 Notice: Uninitialized string offset: 0 in vendor\composer\ClassLoader.php …

2
すべてのキャッシュ/静的ファイルをフラッシュするためのMagento2正しいシーケンス
Magento2で生成されたクラス、前処理されたファイル、およびキャッシュを使用した開発に苦労しています。 Magento1と比較すると、すべてのキャッシュを無効にすると、効率的に開発することができなくなったようです。さらに、キャッシュが構築する機能に干渉するかどうかを確認する必要もあります。 私の問題は、非常に多くのキャッシュと生成されたファイルがあり、どれが相互に依存しているか、そしてすべての開発の新鮮なビューを得るためにそれらをどの順序でフラッシュする必要があるかわかりません。 バックエンドキャッシュ領域があります クリーンアップできるすべての標準キャッシュ カタログ画像キャッシュ 静的ファイルキャッシュ CSS / JSキャッシュ 次にbashコマンドがあります php bin / magento cache:clean php bin / magento setup:static-content:deploy 次に、手動で削除できるフォルダがあります var / generation var / cache var / page_cache var / view_preprocessed パブ/静的 それは多くの可能性であり、おそらくすべてではありません。大規模な更新、コードの変更、CSS / JSの変更、テンプレートの変更をデプロイした場合 すべてをきれいにするためにこれらのステップのどれをするべきですか?これらの手順はどの順序で実行する必要がありますか?

2
Magento 2プロキシクラスのオーバーライド
\Magento\Catalog\Model\Product\Link正常に機能している設定を使用してクラスをオーバーライドする必要がありますが、上記のクラスには\Magento\Catalog\Model\Product\Link\Proxy、オーバーライドに追加された新しいメソッドが含まれていないプロキシクラスが自動的に生成されます。これらのメソッドをプロキシクラスに挿入する方法はありますか? 編集 私はこれを掘り下げてみましたが、di.xmlを使用してプロキシを注入できることがわかりました。しかし、そうしようとすると、クラスPackage\Module\Model\Class\Proxyが存在しないという例外が発生しました。つまり、私が生成しようとしている新しいプロキシが自動的に生成されていません。

5
Magento 2-致命的なエラー「ディレクトリを作成できません」var / generation / Magento /
モード変更に失敗した後、「リクエストの処理中に問題が発生しました」が発生しました。助けが必要です。 これがログ出力です: a:4:{i:0;s:128:"Can't create directory var/generation/Magento/Framework/App/PageCache/Identifier/.";i:1;s:4945:"#0 vendor/magento/framework/Code/Generator/Autoloader.php(35): Magento\Framework\Code\Generator->generateClass('Magento\\Framewo...') #1 [internal function]: Magento\Framework\Code\Generator\Autoloader->load('Magento\\Framewo...') #2 [internal function]: spl_autoload_call('Magento\\Framewo...') #3 vendor/magento/framework/Code/Reader/ClassReader.php(19): ReflectionClass->__construct('Magento\\Framewo...') #4 vendor/magento/framework/ObjectManager/Definition/Runtime.php(44): Magento\Framework\Code\Reader\ClassReader->getConstructor('Magento\\Framewo...') #5 vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(71): Magento\Framework\ObjectManager\Definition\Runtime->getParameters('Magento\\Framewo...') #6 vendor/magento/framework/ObjectManager/ObjectManager.php(71): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Magento\\Framewo...') #7 vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(236): Magento\Framework\ObjectManager\ObjectManager->get('Magento\\Framewo...') #8 vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(53): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(Array, 'Magento\\Framewo...', NULL, 'identifier', 'Magento\\Framewo...') #9 vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(82): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments('Magento\\Framewo...', Array, Array) #10 vendor/magento/framework/ObjectManager/ObjectManager.php(71): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Magento\\Framewo...') #11 vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(236): Magento\Framework\ObjectManager\ObjectManager->get('Magento\\Framewo...') #12 …

3
ユニットテストでファクトリまたはプロキシを生成:「ReflectionException:Class…Factory does not exist」
私が理解している限りFactory、Proxyクラスがまだ存在しない場合、クラスはオートローダーによってオンザフライで生成されますvar/generation(参照:Magento 2でのファクトリーの生成をトリガーするもの) しかし、ユニットテストで新しいファクトリを参照するときにこのエラーが発生するのはなぜですか? ReflectionException:クラスMagento \ Framework \ Api \ Search \ SearchCriteriaBuilderFactoryは存在しません [...] / vendor / magento / framework / TestFramework / Unit / Helper / ObjectManager.php:161 use Magento\Framework\Api\Search\SearchCriteriaBuilderFactory; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; class SearchCriteriaTest extends \PHPUnit_Framework_TestCase { public function testFactoryGeneration() { $searchCriteriaBuilderFactory = (new ObjectManager($this))->getObject(SearchCriteriaBuilderFactory::class); } } ブートストラップファイルを使用していますdev/tests/unit/framework/bootstrap.php。 クラスを生成するために見つけた回避策: 実際のオブジェクトマネージャーを使用(ありがとう@DigitalPianism): \Magento\Framework\App\Bootstrap::create(BP, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.