คำถามติดแท็ก magento2

คำถามทั่วไปเกี่ยวกับ Magento 2 ไม่ใช่เฉพาะรุ่นรอง ใช้แท็กนี้เพื่อแยกความแตกต่างจาก Magento 1. หากคุณมีปัญหากับรุ่นที่เฉพาะเจาะจงโปรดใช้แท็ก 'Magento-2.x' ที่เหมาะสมแทน ฟังก์ชันการทำงานระหว่าง Magento 2 รุ่นรองอาจแตกต่างกัน


4
Magento 2: วิธีกรองคอลเลคชั่นผลิตภัณฑ์ตามรหัสร้านค้า
ด้วยการใช้วัตถุจากโรงงานฉันสามารถสร้างผลิตภัณฑ์คว้าชุดผลิตภัณฑ์และดึงรายการแรกของชุดสะสมนั้นได้ /* var $productFactory \Magento\Catalog\Model\ProductFactory */ $product = $this->productFactory->create()->getCollection()->getFirstItem(); อย่างไรก็ตามหากฉันพยายามเพิ่ม store_id ลงในตัวกรองของคอลเลกชัน $product = $this->productFactory ->create() ->getCollection() ->addFieldToFilter('store_id', 1) ->getFirstItem(); ฉันได้รับข้อผิดพลาดดังต่อไปนี้ Invalid attribute name: store_id #0 /Users/alanstorm/Sites/magento-2-dev-docs.dev/magento2/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php(1434): Magento\Eav\Model\Entity\Collection\AbstractCollection->_addAttributeJoin('store_id', 'inner') #1 /Users/alanstorm/Sites/magento-2-dev-docs.dev/magento2/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php(359): Magento\Eav\Model\Entity\Collection\AbstractCollection->_getAttributeConditionSql('store_id', 1, 'inner') #2 /Users/alanstorm/Sites/magento-2-dev-docs.dev/magento2/app/code/Magento/Catalog/Model/Resource/Product/Collection.php(1489): Magento\Eav\Model\Entity\Collection\AbstractCollection->addAttributeToFilter('store_id', 1, 'inner') #3 /Users/alanstorm/Sites/magento-2-dev-docs.dev/magento2/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php(382): Magento\Catalog\Model\Resource\Product\Collection->addAttributeToFilter('store_id', 1) ... #63 {main} สิ่งเดียวกันนี้เกิดขึ้นถ้าฉันพยายามใช้ที่เก็บผลิตภัณฑ์เพื่อกรองโดย store_id (ที่เก็บใช้คอลเล็กชันภายใต้ประทุน) นี่เป็นข้อบกพร่องหรือไม่? …

3
Magento 2 วิธีการถอนการติดตั้งคุณลักษณะที่เพิ่มโดยโมดูลที่กำหนดเอง?
จนถึงขณะนี้ผมรู้ว่าเมื่อถอนการติดตั้งโมดูลที่กำหนดเองมันเป็นไปได้ที่จะลบตารางที่กำหนดเองหรือคอลัมน์ที่เพิ่มขึ้นโดยโมดูลที่กำหนดเองโดยใช้ซึ่งทอดตัวuninstall.php \Magento\Framework\Setup\UninstallInterfaceแต่จะลบแอตทริบิวต์ที่กำหนดเองที่เพิ่มโดยInstallData.phpเมื่อถอนการติดตั้งโมดูลได้อย่างไร ขอบคุณล่วงหน้า!

3
Magento2 InstallSchema เพิ่มคอลัมน์ใหม่ลงในตารางที่มีอยู่
ฉันพยายามเพิ่มคอลัมน์ใหม่ลงในตารางที่มีอยู่ใน magento2 <?php namespace Vendor\Module\Setup; use Magento\Framework\Setup\InstallSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; /** * @codeCoverageIgnore */ class InstallSchema implements InstallSchemaInterface { /** * {@inheritdoc} * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function install(SchemaSetupInterface $setup, ModuleContextInterface $context) { $installer = $setup; $installer->startSetup(); $eavTable = $installer->getTable('eav_attribute'); $columns = [ 'my_column' => [ 'type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, 'length' …

4
Magento 2 Helper เช่น
เมื่อฉันคิดว่าฉันเอาหัวของฉันพันรอบระบบ DI จาก Magento 2 มีบางอย่างเกิดขึ้นและไม่ห่อหุ้ม ฉันเห็นรหัสหลักในวิธีต่างๆในการเข้าถึงตัวช่วย ตัวอย่างเช่นในMagento\Catalog\Controller\Category::_initCategoryสิ่งนี้: if (!$this->_objectManager->get('Magento\Catalog\Helper\Category')->canShow($category)) { return false; } แต่ในMagento\Catalog\Block\Category\Viewตัวช่วยถูกฉีดเข้าไปในตัวสร้างเขา public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Catalog\Model\Layer\Category $catalogLayer, \Magento\Framework\Registry $registry, \Magento\Catalog\Helper\Category $categoryHelper, array $data = array() ) { $this->_categoryHelper = $categoryHelper; $this->_catalogLayer = $catalogLayer; $this->_coreRegistry = $registry; parent::__construct($context, $data); } นี้ทำให้ฉันคิดว่าผู้ช่วยเหลือควรจะแตกต่างกันในการเข้าถึงตัวควบคุมและบล็อก (และรุ่น) Magento\Catalog\Controller\Adminhtml\Product\Action\Attributeแต่แล้วผมพบว่าตัวควบคุมที่เป็นผู้ช่วยที่ถูกฉีดในตัวสร้างที่ โปรดล้างหมอกให้ฉันด้วย ฉันควรใช้ DI …

1
Magento 2 - หน้าผลิตภัณฑ์ทั้งหมดพร้อมการนำทางและการแบ่งหน้า
ผมต้องการสร้างหน้าสินค้าทั้งหมดที่มีfilters, ,toolbarpagination ฉันสามารถทำได้โดยการสร้างหมวดหมู่ใหม่ที่มีชื่อAll Productsและกำหนดผลิตภัณฑ์ทั้งหมดในนั้น แต่ฉันเดาว่านี่ไม่ใช่วิธีการที่ดีราวกับว่าทุกครั้งที่มีการเพิ่มผลิตภัณฑ์ใหม่ลงในเว็บไซต์ก็ควรเพิ่มในหมวดหมู่ผลิตภัณฑ์ทั้งหมด มีโอกาสผิดพลาดจากมนุษย์มากมาย มีวิธีเรียกเพจหมวดหมู่ด้วยหมวดหมู่ระดับรูทหรือไม่? ชอบจากID: 2 มันก็โอเคถ้าใครไม่ต้องการเขียนโค้ดให้ฉัน แต่ถ้าใครสามารถช่วยฉันหาวิธีที่จะทำมันจะดี

1
Magento 2 - ปัญหาการคัดแยกสินค้าในหน้าหมวดหมู่โดยใช้คุณสมบัติของผลิตภัณฑ์
ฉันทำคุณสมบัติของผลิตภัณฑ์และกำหนดบนชุดคุณลักษณะเพื่อที่จะแสดงในหน้ารายละเอียดผลิตภัณฑ์ของผู้ดูแลระบบ ขึ้นอยู่กับคุณลักษณะของผลิตภัณฑ์นี้ฉันเรียงลำดับการรวบรวมผลิตภัณฑ์ในหน้าหมวดหมู่ ปัญหาคือผมตั้งไปCatalog Input Type for Store Owner Text fieldฉันจะต้องตั้งค่าตัวเลขสำหรับแต่ละผลิตภัณฑ์เพื่อเรียงลำดับการรวบรวมผลิตภัณฑ์ตามคุณลักษณะนี้ มันทำงานได้ดีจาก 1-9 แต่เมื่อฉันเพิ่มจำนวนมากกว่า 9 เช่น 10, 11 เป็นต้นมันจะทำลายการเรียงลำดับ อาจเป็นเพราะประเภทเขตข้อมูลไม่ใช่ชนิดตัวเลข ความช่วยเหลือประสบการณ์และการแบ่งปันความรู้ใด ๆ จะได้รับการชื่นชม


2
Magento 2 ค่าแอตทริบิวต์ของลูกค้าที่กำหนดเองไม่ได้รับการบันทึกในฐานข้อมูล?
ฉันได้เพิ่มแอตทริบิวต์ที่กำหนดเองสองรายการสำหรับหน้าการลงทะเบียนลูกค้า (อีเมลสำรอง & หมายเลขสำรอง) ในโมดูลใหม่ (ผ่าน: แอพ / รหัส / ... / การตั้งค่า / InstallData.php) ฉันได้ออกแบบ 'มุมมอง' ภายในธีมที่กำหนดเอง (โดยแทนที่ register.phtml) ตอนนี้ฉันสามารถเห็นฟิลด์ใหม่ในหน้าลงทะเบียน อย่างไรก็ตามข้อมูลภายในเขตข้อมูลใหม่ (อีเมลและหมายเลขสำรอง) ไม่ได้รับการบันทึกไว้ในฐานข้อมูล 'customer_entity_int' บันทึก '0' ค่า .. 'customer_entity_varchar' ไม่บันทึกอะไรเลย .. ที่นี่ในหน้าจอคุณสามารถดูค่าถูกบันทึกเป็น '0' attribute_id 132 ใช้สำหรับ 'หมายเลขติดต่อสำรอง' ในหน้าลงทะเบียน ดังนั้นฉันจึงคาดหวังว่าค่านี้จะเก็บข้อมูลที่ฉันป้อนในหน้าการลงทะเบียนส่วนหน้า ผมทำอะไรผิดหรือเปล่า ?

4
เพิ่มคอลัมน์อัพเกรด Schema Magento 2
ฉันต้องการแทรกเขตข้อมูลใหม่สำหรับตารางฐานข้อมูลในส่วนขยายที่กำหนดเองของฉันโดยใช้สกีมาอัพเกรดโดยทำตามโพสต์นี้แต่ฉันพบข้อผิดพลาด: [Zend_Db_Statement_Exception] SQLSTATE[42S02]: Base table or view not found: 1146 Table 'Category Depth.l ime_eleveniacategory' doesn't exist, query was: DESCRIBE `Category Depth`.` lime_eleveniacategory` นี่คือรหัสของฉัน: namespace Test\TestAgain\Setup; use Magento\Framework\Setup\UpgradeSchemaInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\SchemaSetupInterface; class UpgradeSchema implements UpgradeSchemaInterface { /** * {@inheritdoc} */ public function upgrade( SchemaSetupInterface $setup, ModuleContextInterface $context ) { $setup->startSetup(); …

5
Magento 2 เพิ่มฟิลด์ใหม่ให้กับฟอร์มผู้ดูแลระบบ Magento_User
ฉันกำลังมองหาวิธีการที่ดีด้วยการเพิ่ม / อัปเดตที่เตรียมไว้แล้ว (โดยค่าเริ่มต้น) แบบฟอร์มของผู้ใช้ Magento (โมดูลผู้ใช้) แบบฟอร์มสามารถเข้าถึงได้ในแผงควบคุมโดยเส้นทางนี้: ระบบ> ผู้ใช้ทั้งหมด> [selected_user]> แท็บแก้ไขหลักของผู้ใช้ (ข้อมูลบัญชี) ตอนนี้ฉันกำลังลองใช้ di.xml ในโมดูลที่กำหนดเองที่ฉันระบุการพึ่งพา: ` <preference for="Magento\User\Block\User\Edit\Tab\Main" type="Vendor_Name\Module_Name\Block\User\Edit\Tab\Main" /> <preference for="Magento\User\Block\Role\Grid\User" type="Vendor_Name\Module_Name\Block\Role\Grid\User" /> ` นี่คือเนื้อหาที่ฉันสร้างขึ้นสำหรับคลาส Main.php // @codingStandardsIgnoreFile เนมสเปซ Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab; ใช้ \ Magento \ User \ Block \ …

1
คีย์แบบฟอร์มส่วนหน้าถูกเขียนทับ
ขณะนี้ฉันกำลังมีปัญหากับแบบฟอร์มส่วนหน้าโดยที่ปุ่มแบบฟอร์มถูกเขียนทับและแสดงแบบฟอร์มที่ไม่ถูกต้อง ขณะนี้ฉันกำลังดีบักปัญหานี้ในแบบฟอร์มการเข้าสู่ระบบลูกค้า นี่คือสแน็ปช็อตของรหัสที่ login.phtml ซึ่งฉันตั้งค่าเพื่อดูว่าค่าคีย์ฟอร์มคืออะไร <?php $retrievedKey = $block->getBlockHtml('formkey'); echo $retrievedKey ; // i made a breakpoint and inspected $retrievedKey, it returned a html output <input> ... </input> with a form key value of, let's name it 'keyA'. ?> ตกลงดังนั้นตอนนี้หลังจากที่ฉันดำเนินการรหัสต่อไปก็จะแสดงผลหน้าเว็บสำเร็จ และตอนนี้ฉันไปตรวจสอบการป้อนคีย์ที่ซ่อนอยู่ในเบราว์เซอร์โครมของฉันอย่างไรก็ตามมันจะพิมพ์คีย์ฟอร์มที่แตกต่างอย่างสิ้นเชิงจาก ' KeyA ' เราจะตั้งชื่อคีย์ฟอร์มใหม่ ' KeyB ' ตอนนี้ฉันลองทำล็อกอินแล้วส่งแบบฟอร์ม ฉันตรวจสอบคำขอที่ถูกส่งไปและมันผ่านตัวแปรสำคัญในรูปแบบของค่าที่สะท้อนถึง …

3
MAGE_DIRS พารามิเตอร์ bootstrap ใน CLI
ในpub/index.phpรหัสต่อไปนี้จะใช้ในการตั้งค่าการเปลี่ยน URL สำหรับสื่อและสินทรัพย์คงที่เพื่อละเว้น "/ pub": $params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [ DirectoryList::PUB => [DirectoryList::URL_PATH => ''], DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'], DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'], DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'], ]; $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params); น่าเสียดายในสคริปต์ CLI ( bin/magento) ไม่มีอะไรเช่นนี้ ฉันพบชั้นเรียนMagento\Setup\Mvc\Bootstrap\InitParamListenerด้วยรหัสต่อไปนี้: $initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM); $directoryList = $this->createDirectoryList($initParams); แต่ฉันไม่เข้าใจว่าตัวจัดการบริการ Zend นี้ดึงข้อมูลและวิธีที่เป็นไปได้ที่จะมีอิทธิพลต่อข้อมูลอย่างไร ปัญหาที่เป็นรูปธรรมของฉันคือตัวสร้างดัชนีจะต้องสร้าง URL …

4
แนวทางปฏิบัติที่ดีที่สุดของระบบไฟล์
ฉันกำลังทำงานกับส่วนขยายของ Magento 2 ที่ต้องอ่านไฟล์จากระบบไฟล์ เมื่อใช้ PHP ดมกลิ่นโดยใช้มาตรฐาน ECGM2 ก็บ่นเกี่ยวกับความจริงที่ว่าฉันใช้ฟังก์ชั่นเหมือนหรือ basenamedirname ห้ามใช้ฟังก์ชั่น dirname () หรือ ห้ามใช้งานฟังก์ชันพื้นฐาน () ฉันควรใช้ wrapper แบบไหนเพื่อให้ได้เอฟเฟกต์เดียวกัน [แก้ไข] นี่คือรหัสบางส่วน แต่ไม่เกี่ยวข้องกับคำถาม ฉันมีคลาสคอลเล็กชันที่ขยาย\Magento\Framework\Data\Collection\Filesystemคลาสและฉันต้องการแสดงรายการคอลเล็กชันนี้ในกริด (องค์ประกอบ UI) และหนึ่งในแอ็คชั่นในกริดคือการดาวน์โหลด สำหรับสิ่งนี้ฉันต้องได้รับชื่อจริงของไฟล์เพื่อที่ฉันจะได้ส่งไฟล์ไปยังการดำเนินการดาวน์โหลด // here $file is dynamic and it can be // folder/filename.xml or folder/subfolder/file.tar.gz //so there is no strict number of folders and subfolders. …

1
Magento 2 - ธุรกรรมฐานข้อมูลสำหรับวัตถุโมเดล / ทรัพยากรหลายรุ่น?
หากฉันมีลอจิกที่เกี่ยวข้องกับการอัปเดตวัตถุหลายรุ่นซึ่งจะอัปเดตบางตารางในฐานข้อมูลวิธีการทำธุรกรรมฐานข้อมูลเพื่อให้แน่ใจว่ามีความสมบูรณ์ของข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.