พารามิเตอร์ที่ต้องการ 'theme_dir' ไม่ถูกส่งผ่าน


61

ข้อความแสดงข้อผิดพลาดคืออะไร:

พารามิเตอร์ที่ต้องการ 'theme_dir' ไม่ถูกส่งผ่าน

มันเกี่ยวข้องกับใน Magento 2 หรือไม่? และปัญหานี้จะแก้ไขได้อย่างไร?


ฉันแก้ไขสิ่งนี้โดยการเปลี่ยนการอนุญาตของโฟลเดอร์ชุดรูปแบบ
taoufiqaitali

พยายามแก้ปัญหาทุกอย่างจบลงด้วยการติดตั้งใหม่คุณภาพเยี่ยม
Robert Sinclair

คำตอบ:


86

ในกรณีที่คุณลบธีมโดยตรง (ไม่ใช่ในแบบวีโอไอพี)

จากนั้นทำตามขั้นตอนเหล่านี้

ขั้นตอนที่ 1: การใช้งานไฟล์

ลบเนื้อหาออกapp/design/frontend/<Vendor>(โปรดสำรองก่อน)

ลบเนื้อหาทั้งหมดของโฟลเดอร์และvar/view_preprocessedpub/static/frontend

ขั้นตอนที่ 2: การดำเนินงานฐานข้อมูล

ไปที่themeตารางของคุณและลบรายการสำหรับธีมที่คุณสร้างขึ้น

หลังจากนั้น...

ไปที่core_config_dataตารางของคุณและค้นหาthemeแล้วคุณจะได้รับบันทึกเส้นทางเช่นdesign/theme/theme_idแทนที่รหัสชุดรูปแบบเริ่มต้นของคุณ

ขั้นตอนที่ 3: ล้างแคช

ล้างแคชของคุณ php bin/magento cache:flush

แจ้งให้เราทราบหากคุณยังคงประสบปัญหาหลังจากนั้น


ขอบคุณ ฉันมีปัญหาเดียวกันเมื่อฉันลบธีม อย่าลืมลบสิ่งที่เหลืออยู่ในฐานข้อมูล ฉันแก้ไขthemeตาราง - แต่ลืมเกี่ยวกับcore_config_dataค่า
Giel Berkers

@GielBerkers: ยินดีต้อนรับ :)
Kaushal Suthar

@KaushalSuthar สิ่งนี้ไม่ทำงานเลยแทนที่จะเป็นผู้ดูแลระบบในรูปแบบข้อความ จากนั้นหลังจากsetup:static-content:deployผู้ดูแลระบบกลับไปที่ UI
Ashwani Shukla

@AshwaniShukla: คุณอาจทำผิดพลาดในระหว่างกระบวนการ ...
Kaushal Suthar

@ KaushalSuthar ข้อผิดพลาดเดียวที่ฉันทำpub/static/.htaccessคือไม่ได้อยู่ที่นั่น ขอบคุณ
Ashwani Shukla

28

ข้อความแสดงข้อผิดพลาดนี้หมายความว่าคุณมีธีมที่กำหนดค่าซึ่งไม่มีอยู่ในระบบไฟล์ (อีกต่อไป)

สามารถแก้ไขได้อย่างง่ายดายโดยเลือกธีมที่ถูกต้องแทน ไปที่เนื้อหา -> การกำหนดค่าเลือกขอบเขต (ทั่วโลกเว็บไซต์ store_view) และเปลี่ยนชุดรูปแบบ หลังจากที่คุณได้กระทำที่คุณควรลบออกจากเนื้อหา -> ธีม

เปลี่ยนธีมสำหรับร้านค้า

อ้างอิง


อาจเป็นกรณีนี้หากไดเร็กทอรีธีมของคุณไม่มีสิทธิ์ที่เหมาะสม
นาธาน Moinvaziri

สิทธิ์ควรถูกตรวจสอบโดยสคริปต์ Magento บาง AFAIK แต่คุณถูกต้องสิ่งนี้มีคุณสมบัติเหมือนกัน: ไดเรกทอรีที่เข้าไม่ถึงมักจะทำงานคล้ายกับไดเรกทอรีที่ไม่มีอยู่
hakre

3
นี่ไม่ใช่สถานที่ซึ่งตั้งอยู่อีกต่อไป มันอยู่ในแท็บเนื้อหาทันที
CarComp

@CarComp: โปรดให้ภาพหน้าจอที่อัปเดตแล้วแก้ไขคำตอบ เมื่อฉันตอบมันเป็นเอกสาร
hakre

11

ในกรณีของฉันฉันลบชุดรูปแบบลูกจากไดเรกทอรีผู้ขาย แต่รายการฐานข้อมูลยังคงมีอยู่ในthemeตาราง ดังนั้นไปที่themeตารางและลบระเบียนที่ชี้ไปที่ชุดรูปแบบที่ถูกลบ


คุณลบจากไดเรกทอรีผู้จัดจำหน่ายได้อย่างไร? กับนักแต่งเพลงโดยcomposer remove vendor/theme?
hakre

ไม่เพียงแค่rm -rf vendor/theme
Arvind07

7

ตรวจสอบให้แน่ใจว่าthemeรายการตารางและmagento\app\design\frontend\<Vendor>รายการจะเหมือนกัน

ถ้าไม่ใช่มันทำให้เกิดปัญหานี้

นำรูปแบบที่ไม่จำเป็นผ่านทางผู้ดูแลระบบ -> เนื้อหา -> ออกแบบ -> ธีม ลบมัน. ดังนั้นมันจะลบ DB Entry เช่นกัน

ถ้าคุณเพียงลบโฟลเดอร์มันจะไม่ทำงาน


7

ปัญหานี้อาจเกิดขึ้นเมื่อคุณอยู่ในสถานะจำลองด้วยเช่นในคำสั่ง 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()
    ]
);

วิธีนี้คุณไม่ต้องแฮ็กตัวเล็กของคุณสกปรก


ขอบคุณสำหรับการแบ่งปันในส่วนลึกนี้ คำตอบนี้ค่อนข้างจะกลายเป็นคำถามที่พบบ่อยเกี่ยวกับมันเป็นของตัวเองดีมากที่จะเห็น
hakre

4

วิ่ง 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ไดเรกทอรี


1

@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 ( ร้านค้า> การกำหนดค่า> การตั้งค่าชุดรูปแบบ> ทั่วไป> การออกแบบ> ชุดรูปแบบการออกแบบ ) ซึ่งมีชุดรูปแบบการออกแบบก่อนหน้าและตอนนี้ไม่ถูกต้อง


ฉันได้รับข้อผิดพลาดนี้เฉพาะเมื่อเพิ่ม 'แคช' เพื่อกำหนดค่า redis ใหม่ให้กับ env.php ลบการเปลี่ยนแปลงและใช้งานได้ดี เหตุใดจึงเพิ่มเมื่อ 'แคช' เท่านั้น ฉันตรวจสอบไวยากรณ์ของอาร์เรย์และไม่เป็นไร ค่า cache => เดียวกันกำลังทำงานบนเซิร์ฟเวอร์การแสดงละครของฉัน (ตัด / วาง)
Scott

1

ข้อผิดพลาดนี้เกิดขึ้นกับฉันเมื่อบันทึกรูปภาพผลิตภัณฑ์หลังจากติดตั้งธีมที่กำหนดเอง

ฉันมีชุดรูปแบบที่กำหนดเองซึ่งถูกตั้งค่าเป็นประเภทเสมือนที่อยู่ในฐานข้อมูลในชุดรูปแบบให้พิมพ์ = 1 ในกรณีของฉันฉันไม่ได้ใช้ชุดรูปแบบอีกต่อไปดังนั้นฉันจึงลบมันออกจากตาราง


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

0

หากไม่มีอะไรทำงานอย่าลืมตรวจสอบส่วนหมวดหมู่ มีการตั้งค่าการออกแบบที่นั่นด้วย ตรวจสอบให้แน่ใจว่าได้กำหนดธีมการออกแบบที่ถูกต้อง ในกรณีของฉันฉันได้รับข้อผิดพลาดในบางหมวดหมู่เท่านั้น


คุณช่วยยกตัวอย่างสถานการณ์ที่อาจเกิดปัญหานี้ได้ไหม สิ่งเดียวที่ฉันนึกได้ก็คือถ้าเลย์เอาต์ถูกเปลี่ยนเป็นตัวเลือกซึ่งมีอยู่ในธีมที่กำหนดเองเท่านั้นดังนั้นธีมจะถูกลบออก แต่ถ้าสิ่งนี้เกิดขึ้นในขณะที่ใช้เค้าโครงเริ่มต้นเท่านั้น (หรือรุ่นเริ่มต้นที่แก้ไขแล้วโดยใช้ชื่อเดียวกัน) ดังนั้นมันจึงบอกเป็นนัยถึงความผิดของชุดรูปแบบที่กำหนดเองและไม่ใช่ด้วยซอฟต์แวร์วีโอไอพีเอง?
Joshua Flood

0

เมื่อคุณเพิ่มหรือแก้ไขผลิตภัณฑ์จากนั้นไปที่ส่วนการออกแบบและเปลี่ยนตัวเลือกเค้าโครง

ป้อนคำอธิบายรูปภาพที่นี่


0

คุณสามารถลบชุดรูปแบบที่ไม่ได้ใช้ออกจาก DB ได้โดยตรงโดยดำเนินการค้นหาด้านล่างนี้:

delete from theme where theme_path in ('unusedtheme');

เมื่อไม่ได้ใช้ชุดรูปแบบเป็นชุดรูปแบบที่ไม่ได้ใช้และหลังจากนั้นคุณจะลบแคชของคุณ


0

ฉันมีปัญหานี้เมื่อฉันลบออกโดยโฟลเดอร์ app / desing / adminhtml / theme-name การนำมันกลับมาแก้ไขปัญหาของฉันได้ ยิ่งกว่านั้นมันเกิดขึ้นเมื่อฉันพยายามเข้าสู่ Admin Panel


0

ในบางกรณีคุณลบชุดรูปแบบที่กำหนดเองอย่างไม่เหมาะสมจากนั้นคุณจะพบกับข้อผิดพลาดนี้ ในสถานการณ์นี้:

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'

รีเฟรชหน้าผิดพลาด


0

ฉันแก้ไขปัญหาแล้ว ในกรณีของฉันปัญหาไม่ใช่ Magento2 แต่เป็นการดำเนินการที่ผิดฉันได้ทำไปแล้วในเวลาต่อไปนี้: ฉันสร้างธีมที่สร้างเส้นทางสัมพัทธ์ในแอพ / design / frontend / MyFolder / MyTheme และลงทะเบียนตามที่อธิบายไว้ในเอกสารออนไลน์ของ Magento 2 จากนั้นฉันตัดสินใจที่จะยกเลิกชุดรูปแบบและแทนที่จะใช้คำสั่งที่เหมาะสม: ชุดรูปแบบ bin / magento: ถอนการติดตั้งส่วนหน้า / MyFolder / MyTheme ฉันลบโฟลเดอร์โดยตรง นี่ไม่ใช่การดำเนินการที่ดีเนื่องจากฐานข้อมูลไม่ได้รับการอัปเดตด้วยข้อมูลที่ครบกำหนด โซลูชัน: ด้วยเครื่องมือแก้ไขฐานข้อมูลเป็น phpmyadmin ให้ลบระเบียนในตาราง "ธีม" ที่สัมพันธ์กับโฟลเดอร์ที่ถูกลบ ฉันหวังว่านี่จะช่วยได้!


0

ฉันรู้ว่าคำถามนี้ค่อนข้างเก่า แต่เมื่อฉันพบปัญหานี้ในวันนี้และพบว่าปัญหาของฉันคืออะไรฉันจึงตัดสินใจโพสต์คำตอบเพื่อเตือนความทรงจำสำหรับทุกคนที่ชอบฉันใช้ PhpStorm เพื่อทำงานกับ Magento: อย่าลืมตรวจสอบไฟล์ของคุณเมื่อสลับสาขา

ในกรณีของฉันสาขาที่ฉันทำงานไม่มีไฟล์ธีมที่ต้องการ (พวกเขาถูก PhpStorm ถูก stashed เมื่อฉันเปลี่ยนจากธีมสาขาเป็นสาขาหลัก) เพราะพวกเขายังไม่ได้รวมเข้าด้วยกันดังนั้น ความผิดพลาด

หวังว่านี่อาจช่วยใครซักคน


-1

ลบไฟล์ชั่วคราวของธีมทั้งหมดที่ไม่ได้ใช้บนเว็บไซต์และลบออกจากธีมที่ไม่ได้ใช้และเรียกใช้แคช: ล้างข้อมูล

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