ข้อความแสดงข้อผิดพลาดคืออะไร:
พารามิเตอร์ที่ต้องการ 'theme_dir' ไม่ถูกส่งผ่าน
มันเกี่ยวข้องกับใน Magento 2 หรือไม่? และปัญหานี้จะแก้ไขได้อย่างไร?
ข้อความแสดงข้อผิดพลาดคืออะไร:
พารามิเตอร์ที่ต้องการ 'theme_dir' ไม่ถูกส่งผ่าน
มันเกี่ยวข้องกับใน Magento 2 หรือไม่? และปัญหานี้จะแก้ไขได้อย่างไร?
คำตอบ:
ในกรณีที่คุณลบธีมโดยตรง (ไม่ใช่ในแบบวีโอไอพี)
จากนั้นทำตามขั้นตอนเหล่านี้
ลบเนื้อหาออกapp/design/frontend/<Vendor>
(โปรดสำรองก่อน)
ลบเนื้อหาทั้งหมดของโฟลเดอร์และvar/view_preprocessed
pub/static/frontend
ไปที่theme
ตารางของคุณและลบรายการสำหรับธีมที่คุณสร้างขึ้น
หลังจากนั้น...
ไปที่core_config_data
ตารางของคุณและค้นหาtheme
แล้วคุณจะได้รับบันทึกเส้นทางเช่นdesign/theme/theme_id
แทนที่รหัสชุดรูปแบบเริ่มต้นของคุณ
ล้างแคชของคุณ php bin/magento cache:flush
แจ้งให้เราทราบหากคุณยังคงประสบปัญหาหลังจากนั้น
theme
ตาราง - แต่ลืมเกี่ยวกับcore_config_data
ค่า
setup:static-content:deploy
ผู้ดูแลระบบกลับไปที่ UI
pub/static/.htaccess
คือไม่ได้อยู่ที่นั่น ขอบคุณ
ข้อความแสดงข้อผิดพลาดนี้หมายความว่าคุณมีธีมที่กำหนดค่าซึ่งไม่มีอยู่ในระบบไฟล์ (อีกต่อไป)
สามารถแก้ไขได้อย่างง่ายดายโดยเลือกธีมที่ถูกต้องแทน ไปที่เนื้อหา -> การกำหนดค่าเลือกขอบเขต (ทั่วโลกเว็บไซต์ store_view) และเปลี่ยนชุดรูปแบบ หลังจากที่คุณได้กระทำที่คุณควรลบออกจากเนื้อหา -> ธีม
ตรวจสอบให้แน่ใจว่าtheme
รายการตารางและmagento\app\design\frontend\<Vendor>
รายการจะเหมือนกัน
ถ้าไม่ใช่มันทำให้เกิดปัญหานี้
นำรูปแบบที่ไม่จำเป็นผ่านทางผู้ดูแลระบบ -> เนื้อหา -> ออกแบบ -> ธีม ลบมัน. ดังนั้นมันจะลบ DB Entry เช่นกัน
ถ้าคุณเพียงลบโฟลเดอร์มันจะไม่ทำงาน
ปัญหานี้อาจเกิดขึ้นเมื่อคุณอยู่ในสถานะจำลองด้วยเช่นในคำสั่ง CLI ฉันมีสถานการณ์ที่ฉันไม่สามารถส่งอีเมลใน CLI ได้เนื่องจากคำสั่งการตัดคำสั่งกำลังทำงานในสถานะเลียนแบบ:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
ในตัวอย่างด้านบนเมื่ออีเมลพยายามระบุว่าเป็นแม่แบบ dir มันจะจับคู่กับglobal/Magento/backend
ซึ่งไม่มีอยู่จริง ในการแก้ไขปัญหานี้ฉันต้องเพิ่มด้วยตนเองในตัวสร้างของฉัน:
/** @var \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar */
// Make the admin theme global accessible for sending e-mails:
\Magento\Framework\Component\ComponentRegistrar::register(
'theme',
'global/Magento/backend',
$componentRegistrar->getPath('theme', 'adminhtml/Magento/backend')
);
หลังจากการแก้ไขนี้ปัญหาได้รับการแก้ไขและฉันสามารถส่งอีเมลได้
ปรับปรุง:
เมื่อพูดถึงการส่งจดหมายโดยใช้ CLI แนวทางที่เหมาะสมกว่านี้ก็คือการใช้การจำลอง ตัวอย่างเช่น:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
วิธีนี้คุณไม่ต้องแฮ็กตัวเล็กของคุณสกปรก
วิ่ง sql UPDATE core_config_data SET value=NULL WHERE path='design/theme/theme_id'
แล้วล้างpub/static/frontend
, var/view_preprocessing
, var/cache
, var/page_cache
ไดเรกทอรี
@hakre ถูกต้อง Required parameter 'theme_dir' was not passed
ผมได้รับข้อผิดพลาดเดียวกัน ด้านล่างฉันอธิบายสิ่งที่ฉันทำเพื่อทำให้เกิดข้อผิดพลาด:
ฉันสร้างธีมในapp / ออกแบบ / ส่วนหน้า / MyVendorTheme2 / myThemeName2ไดเรกทอรีและจากนั้นกำหนดค่าได้โดยการเลือกรูปแบบ " MyVendorTheme2 - myThemeName2 " ในเบราว์เซอร์ของผู้ดูแลระบบวีโอไอพี 2 ( ร้านค้า> การกำหนดค่า> การตั้งค่ารูปแบบ> ทั่วไป> การออกแบบ> ออกแบบธีม ) . แต่ฉันตัดสินใจย้ายไดเรกทอรี " myThemeName2 " (มีธีมใหม่ของฉัน) เพื่อให้อยู่ภายใต้โฟลเดอร์ผู้จัดจำหน่าย (ปัจจุบัน) ที่แตกต่างกัน (ที่มีอยู่) " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2โฟลเดอร์ที่ลบออกจากโฟลเดอร์ " MyVendorTheme2 " มันเป็นมาก่อน ฉันเดินไปรวบรวมสินทรัพย์ (เช่นgrunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
) แล้วเปิดเบราว์เซอร์ของฉันที่โดเมนย่อยของธีม (เช่นhttp: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / )
เริ่มแรกฉันมีข้อผิดพลาดที่ไม่ระบุ:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
ฉันเปิดใช้งานการรายงานข้อผิดพลาดโดยเปลี่ยนชื่อpub/errors/local.xml.sample
เป็นlocal.xml
และรีเฟรชหน้า Required parameter 'theme_dir' was not passed
ผมได้นำเสนอแล้วมีข้อผิดพลาด
ฉันแก้ไขข้อผิดพลาดโดยกลับไปที่เบราว์เซอร์ผู้ดูแลระบบ Magento 2 ( ร้านค้า> การกำหนดค่า> การตั้งค่าชุดรูปแบบ> ทั่วไป> การออกแบบ> ชุดรูปแบบการออกแบบ ) ซึ่งมีชุดรูปแบบการออกแบบก่อนหน้าและตอนนี้ไม่ถูกต้อง
ข้อผิดพลาดนี้เกิดขึ้นกับฉันเมื่อบันทึกรูปภาพผลิตภัณฑ์หลังจากติดตั้งธีมที่กำหนดเอง
ฉันมีชุดรูปแบบที่กำหนดเองซึ่งถูกตั้งค่าเป็นประเภทเสมือนที่อยู่ในฐานข้อมูลในชุดรูปแบบให้พิมพ์ = 1 ในกรณีของฉันฉันไม่ได้ใช้ชุดรูปแบบอีกต่อไปดังนั้นฉันจึงลบมันออกจากตาราง
1 - ใช้คำสั่งด้านล่างเพื่อระบุธีมในแผงควบคุม
n98-magerun2 dev:theme:list
2 - รันคำสั่งเพื่อระบุธีมที่ติดตั้ง:
ls -lha app/design/frontend/MyThemePackage/
3- เรียกใช้คำสั่งเหล่านี้ด้านล่างเพื่อสร้างชุดรูปแบบที่ไม่มีอยู่:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
หากไม่มีอะไรทำงานอย่าลืมตรวจสอบส่วนหมวดหมู่ มีการตั้งค่าการออกแบบที่นั่นด้วย ตรวจสอบให้แน่ใจว่าได้กำหนดธีมการออกแบบที่ถูกต้อง ในกรณีของฉันฉันได้รับข้อผิดพลาดในบางหมวดหมู่เท่านั้น
คุณสามารถลบชุดรูปแบบที่ไม่ได้ใช้ออกจาก DB ได้โดยตรงโดยดำเนินการค้นหาด้านล่างนี้:
delete from theme where theme_path in ('unusedtheme');
เมื่อไม่ได้ใช้ชุดรูปแบบเป็นชุดรูปแบบที่ไม่ได้ใช้และหลังจากนั้นคุณจะลบแคชของคุณ
ฉันมีปัญหานี้เมื่อฉันลบออกโดยโฟลเดอร์ app / desing / adminhtml / theme-name การนำมันกลับมาแก้ไขปัญหาของฉันได้ ยิ่งกว่านั้นมันเกิดขึ้นเมื่อฉันพยายามเข้าสู่ Admin Panel
ในบางกรณีคุณลบชุดรูปแบบที่กำหนดเองอย่างไม่เหมาะสมจากนั้นคุณจะพบกับข้อผิดพลาดนี้ ในสถานการณ์นี้:
1) you have to delete that entry/row from 'theme' table.
2) set value 1 (1 for blank theme 2 for Luma what ever you want to set) against 'design/theme/theme_id'
รีเฟรชหน้าผิดพลาด
ฉันแก้ไขปัญหาแล้ว ในกรณีของฉันปัญหาไม่ใช่ Magento2 แต่เป็นการดำเนินการที่ผิดฉันได้ทำไปแล้วในเวลาต่อไปนี้: ฉันสร้างธีมที่สร้างเส้นทางสัมพัทธ์ในแอพ / design / frontend / MyFolder / MyTheme และลงทะเบียนตามที่อธิบายไว้ในเอกสารออนไลน์ของ Magento 2 จากนั้นฉันตัดสินใจที่จะยกเลิกชุดรูปแบบและแทนที่จะใช้คำสั่งที่เหมาะสม: ชุดรูปแบบ bin / magento: ถอนการติดตั้งส่วนหน้า / MyFolder / MyTheme ฉันลบโฟลเดอร์โดยตรง นี่ไม่ใช่การดำเนินการที่ดีเนื่องจากฐานข้อมูลไม่ได้รับการอัปเดตด้วยข้อมูลที่ครบกำหนด โซลูชัน: ด้วยเครื่องมือแก้ไขฐานข้อมูลเป็น phpmyadmin ให้ลบระเบียนในตาราง "ธีม" ที่สัมพันธ์กับโฟลเดอร์ที่ถูกลบ ฉันหวังว่านี่จะช่วยได้!
ฉันรู้ว่าคำถามนี้ค่อนข้างเก่า แต่เมื่อฉันพบปัญหานี้ในวันนี้และพบว่าปัญหาของฉันคืออะไรฉันจึงตัดสินใจโพสต์คำตอบเพื่อเตือนความทรงจำสำหรับทุกคนที่ชอบฉันใช้ PhpStorm เพื่อทำงานกับ Magento: อย่าลืมตรวจสอบไฟล์ของคุณเมื่อสลับสาขา
ในกรณีของฉันสาขาที่ฉันทำงานไม่มีไฟล์ธีมที่ต้องการ (พวกเขาถูก PhpStorm ถูก stashed เมื่อฉันเปลี่ยนจากธีมสาขาเป็นสาขาหลัก) เพราะพวกเขายังไม่ได้รวมเข้าด้วยกันดังนั้น ความผิดพลาด
หวังว่านี่อาจช่วยใครซักคน
ลบไฟล์ชั่วคราวของธีมทั้งหมดที่ไม่ได้ใช้บนเว็บไซต์และลบออกจากธีมที่ไม่ได้ใช้และเรียกใช้แคช: ล้างข้อมูล