Parameter yang diperlukan 'theme_dir' tidak lulus

61

Apa pesan kesalahan:

Parameter yang diperlukan 'theme_dir' tidak lulus

Apakah ini terkait dengan Magento 2? Dan bagaimana masalah ini bisa diperbaiki?

hakre
sumber
saya memperbaikinya dengan mengubah izin folder tema
taoufiqaitali
mencoba setiap solusi, akhirnya menginstal ulang magento
Robert Sinclair

Jawaban:

86

Untuk jaga-jaga jika Anda menghapus tema secara langsung (Tidak dengan cara Magento).

Kemudian ikuti langkah-langkah ini.

LANGKAH 1: Operasi File

Hapus konten dari app/design/frontend/<Vendor>(pastikan Anda mencadangkannya terlebih dahulu).

Hapus semua konten folder var/view_preprocessed& pub/static/frontend.

LANGKAH 2: Operasi DB

Pergi ke thememeja Anda dan hapus entri untuk tema yang Anda buat.

Setelah itu...

Pergi ke core_config_datameja Anda dan cari themedan Anda akan mendapatkan catatan jalur seperti design/theme/theme_idmengganti id tema default Anda di dalamnya.

LANGKAH 3: Siram cache

Siram cache Anda php bin/magento cache:flush

Beri tahu saya jika Anda masih menghadapi masalah setelah itu.

Kaushal Suthar
sumber
Terima kasih. Saya memiliki masalah yang sama ketika saya menghapus suatu tema. Jangan lupa untuk menghapus sisa-sisa yang tersisa di database. Saya memang memperbaiki theme-tabel, tetapi lupa tentang core_config_datanilai.
Giel Berkers
@GielBerkers: Selamat Datang :)
Kaushal Suthar
@ KaushalSuthar ini tidak berfungsi sama sekali sebagai gantinya admin pergi ke format teks. Kemudian setelah menjalankan setup:static-content:deployadmin kembali ke UI.
Ashwani Shukla
@AshwaniShukla: Anda mungkin telah melakukan kesalahan selama proses ...
Kaushal Suthar
@ KaushalSuthar satu-satunya kesalahan yang saya buat pub/static/.htaccessadalah tidak ada di sana. terima kasih
Ashwani Shukla
28

Pesan kesalahan ini berarti bahwa Anda memiliki tema yang dikonfigurasi yang tidak ada pada sistem file (lagi).

Itu dapat dengan mudah diperbaiki dengan memilih tema yang valid sebagai gantinya. Pergi ke Konten -> Konfigurasi , pilih ruang lingkup (global, situs web, store_view) dan ubah tema. Setelah selesai, Anda juga harus menghapusnya dari Konten -> Tema .

ubah tema untuk toko

Referensi

hakre
sumber
Ini juga bisa terjadi jika direktori tema Anda tidak memiliki izin yang tepat.
Nathan Moinvaziri
Izin harus diperiksa oleh beberapa skrip Magento AFAIK, tetapi Anda benar, ini memenuhi syarat sama: Direktori yang tidak dapat diakses sering berperilaku mirip dengan direktori yang tidak ada.
hakre
3
Ini bukan lagi tempat ini berada. itu di tab konten sekarang.
CarComp
@CarComp: Jangan ragu untuk memberikan tangkapan layar yang diperbarui dan edit jawabannya. Ketika saya menjawab, itu seperti yang didokumentasikan.
hakre
11

Dalam kasus saya, saya menghapus tema anak dari direktori Vendor. Tetapi entri DB masih ada di themetabel. Jadi pergi ke themetabel dan hapus catatan yang menunjuk ke tema yang dihapus.

Arvind07
sumber
Bagaimana Anda menghapus dari direktori vendor? Dengan komposer oleh composer remove vendor/theme?
hakre
Tidak, hanyarm -rf vendor/theme
Arvind07
7

Pastikan themeentri tabel & magento\app\design\frontend\<Vendor>Entri akan sama.

Jika tidak, ini yang menyebabkan masalah ini.

Hapus tema yang tidak perlu melalui Admin -> Konten -> Desain -> Tema . Hapus. Jadi itu akan menghapus Entri DB juga.

Jika Anda hanya menghapus folder maka itu tidak akan berfungsi

Ankit Shah
sumber
7

Masalah ini juga dapat terjadi ketika Anda berada dalam kondisi ditiru, misalnya dalam perintah CLI. Saya memiliki situasi di mana saya tidak bisa mengirim email di CLI, karena perintah pembungkus berjalan dalam keadaan ditiru:

$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
    // In this section the email was sent
});

Pada contoh di atas, ketika email mencoba menentukan dir template-nya, itu akan dipetakan ke global/Magento/backend, yang tidak ada. Untuk memperbaikinya, saya harus menambahkannya secara manual di konstruktor:

/** @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')
);

Setelah perbaikan ini, masalah ini terpecahkan dan saya dapat mengirim email.

Memperbarui:

Ketika mengirim surat menggunakan CLI, pendekatan yang lebih tepat adalah menggunakan emulasi. Sebagai contoh:

/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
    'frontend',
    [$this->accountManagement, 'initiatePasswordReset'],
    [
        $customer->getEmail(),
        AccountManagement::EMAIL_REMINDER,
        $customer->getWebsiteId()
    ]
);

Dengan cara ini Anda tidak perlu melakukan peretasan kecil yang kotor.

Giel Berkers
sumber
Terima kasih telah berbagi dalam kedalaman ini. Jawaban ini cukup menjadi FAQ sendiri, sangat menyenangkan untuk dilihat.
hakre
4

Lari sql UPDATE core_config_data SET value=NULL WHERE path='design/theme/theme_id'

kemudian menghapus pub/static/frontend, var/view_preprocessing, var/cache, var/page_cachedirektori.

Ansyori
sumber
1

@akre benar. Saya mendapat kesalahan yang sama Required parameter 'theme_dir' was not passed. Di bawah ini saya jelaskan apa yang saya lakukan untuk menyebabkan kesalahan:

Saya membuat tema di direktori app / design / frontend / MyVendorTheme2 / myThemeName2 , dan kemudian mengkonfigurasinya dengan memilih tema " MyVendorTheme2 - myThemeName2 " di browser Admin Magento 2 ( Toko> Konfigurasi> KEMASAN TEMA> UMUM> Desain> Tema Desain ) . Tapi saya kemudian memutuskan untuk memindahkan direktori " myThemeName2 " (berisi tema baru saya) untuk berada di bawah folder vendor yang berbeda (yang ada) " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2 , dan menghapusnya dari folder " MyVendorTheme2 " di mana itu sebelumnya. Saya melanjutkan untuk mengkompilasi aset (yaitu grunt clean, grunt exec:myThemeName2,grunt less:myThemeName2), dan kemudian membuka browser saya di subdomain tema saya (yaitu http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).

Awalnya saya mendapat kesalahan yang tidak ditentukan: There has been an error processing your request Exception printing is disabled by default for security reasons. Error log record number:

Saya mengaktifkan pelaporan kesalahan dengan mengganti nama pub/errors/local.xml.samplemenjadi local.xml, dan menyegarkan halaman. Saya kemudian disajikan dengan kesalahan Required parameter 'theme_dir' was not passed.

Saya menyelesaikan kesalahan dengan kembali ke peramban Admin Magento 2 saya ( Toko> Konfigurasi> PENGATURAN TEMA> UMUM> Desain> Tema Desain ), yang memilih tema desain saya yang sebelumnya dan sekarang tidak valid, jadi saya memilih yang benar.

Luke Schoen
sumber
Saya mendapatkan kesalahan ini hanya ketika menambahkan 'cache' untuk konfigurasi redis ke env.php. Hapus perubahan, dan itu berfungsi dengan baik. Jadi mengapa hanya saat menambahkan 'cache'? Saya memeriksa sintaks array dan tidak apa-apa. Nilai cache => yang sama berfungsi pada server pementasan saya (cut / paste)
Scott
1

Kesalahan ini terjadi pada saya ketika menyimpan gambar produk setelah menginstal tema khusus.

Saya memiliki tema khusus yang ditetapkan sebagai tipe virtual, yaitu dalam DB di tabel tema, ketik = 1. Dalam kasus saya, saya tidak menggunakan tema lagi jadi saya menghapusnya dari tabel.

paul
sumber
1

1 - Gunakan perintah di bawah ini untuk mengidentifikasi tema di panel admin.

n98-magerun2 dev:theme:list

2 - Jalankan perintah untuk mengidentifikasi tema yang diinstal:

ls -lha app/design/frontend/MyThemePackage/

3 - Jalankan perintah ini di bawah ini untuk membuat tema yang tidak ada:

n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Rafael Corrêa Gomes
sumber
0

Jika tidak ada yang berhasil, jangan lupa untuk memeriksa bagian kategori. Ada pengaturan desain di sana juga. Pastikan bahwa tema desain yang benar ditetapkan. Dalam kasus saya, saya mendapatkan kesalahan hanya pada beberapa kategori.

T. Sherpa
sumber
Bisakah Anda memberikan contoh skenario di mana masalah ini mungkin terjadi? Satu-satunya yang bisa saya pikirkan adalah jika tata letak diubah menjadi opsi yang hanya ada dalam tema khusus, maka tema tersebut dihapus. Tapi, jika ini terjadi sementara hanya menggunakan tata letak default (atau versi modifikasi dari standar, menggunakan nama yang sama), maka itu pasti menyiratkan kesalahan dengan tema khusus dan bukan dengan perangkat lunak magento itu sendiri?
Joshua Flood
0

Ketika Anda menambahkan atau mengedit produk maka buka bagian Desain dan ubah opsi tata letak.

masukkan deskripsi gambar di sini

Abhishek
sumber
0

Anda dapat menghapus tema yang tidak digunakan dari DB secara langsung dengan menjalankan kueri di bawah ini:

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

ketika tema yang tidak digunakan adalah tema yang tidak digunakan, dan setelah Anda akan clena cache Anda

Mohamed El Mrabet
sumber
0

Saya mengalami masalah ini ketika saya dihapus oleh folder app / desing / adminhtml / theme-name kecelakaan. Membawa kembali menyelesaikan masalah saya. Apalagi itu hanya terjadi ketika saya mencoba memasuki Panel Admin.

embed0
sumber
0

Dalam beberapa kasus Anda menghapus tema kustom dengan cara yang tidak tepat maka Anda juga akan menghadapi kesalahan ini. Dalam situasi ini:

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'

Refresh kesalahan halaman hilang.

Hassan Ali Shahzad
sumber
0

Saya menyelesaikan masalah ini. Dalam kasus saya masalahnya bukan Magento2 tetapi operasi yang salah saya lakukan beberapa waktu lalu sebagai berikut: Saya membuat tema menciptakan jalur relatif di app / desain / antarmuka / MyFolder / MyTheme dan mendaftarkannya seperti yang dijelaskan dalam dokumentasi online Magento 2. Kemudian saya memutuskan untuk membatalkan tema dan alih-alih menggunakan perintah yang sesuai: tema bin / magento: uninstall frontend / MyFolder / MyTheme Saya langsung menghapus folder. Ini bukan operasi yang baik karena basis data tidak diperbarui dengan informasi yang seharusnya. Solusi: dengan editor database sebagai phpmyadmin, hapus catatan di tabel "Tema" yang sesuai dengan folder yang dihapus. Saya harap ini akan membantu!

Soundararajan m
sumber
0

Saya tahu pertanyaan ini sudah cukup lama, tetapi karena saya baru saja membahasnya hari ini dan segera mengetahui apa masalah saya, saya memutuskan untuk mengirim jawaban saya sebagai pengingat bagi semua orang yang, seperti saya, menggunakan PhpStorm untuk bekerja dengan Magento: ingatlah untuk memeriksa file Anda saat berpindah cabang.

Dalam kasus saya, cabang yang sedang saya kerjakan tidak memiliki file tema yang diperlukan (mereka disimpan oleh PhpStorm ketika saya berubah dari cabang tema menjadi cabang master) karena mereka belum digabung, sehingga kesalahan.

Semoga ini bisa membantu seseorang.

Renan Lazarotto
sumber
-1

hapus semua file sementara tema yang tidak digunakan di situs web dan hapus juga dari tema yang tidak menggunakan dan jalankan cache: flush

zeshan rahman
sumber