Apa pesan kesalahan:
Parameter yang diperlukan 'theme_dir' tidak lulus
Apakah ini terkait dengan Magento 2? Dan bagaimana masalah ini bisa diperbaiki?
Apa pesan kesalahan:
Parameter yang diperlukan 'theme_dir' tidak lulus
Apakah ini terkait dengan Magento 2? Dan bagaimana masalah ini bisa diperbaiki?
Jawaban:
Untuk jaga-jaga jika Anda menghapus tema secara langsung (Tidak dengan cara Magento).
Kemudian ikuti langkah-langkah ini.
Hapus konten dari app/design/frontend/<Vendor>
(pastikan Anda mencadangkannya terlebih dahulu).
Hapus semua konten folder var/view_preprocessed
& pub/static/frontend
.
Pergi ke theme
meja Anda dan hapus entri untuk tema yang Anda buat.
Setelah itu...
Pergi ke core_config_data
meja Anda dan cari theme
dan Anda akan mendapatkan catatan jalur seperti design/theme/theme_id
mengganti id tema default Anda di dalamnya.
Siram cache Anda php bin/magento cache:flush
Beri tahu saya jika Anda masih menghadapi masalah setelah itu.
theme
-tabel, tetapi lupa tentang core_config_data
nilai.
setup:static-content:deploy
admin kembali ke UI.
pub/static/.htaccess
adalah tidak ada di sana. terima kasih
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 .
Dalam kasus saya, saya menghapus tema anak dari direktori Vendor. Tetapi entri DB masih ada di theme
tabel. Jadi pergi ke theme
tabel dan hapus catatan yang menunjuk ke tema yang dihapus.
composer remove vendor/theme
?
rm -rf vendor/theme
Pastikan theme
entri 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
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.
@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.sample
menjadi 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.
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
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.
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
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.
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!
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.
hapus semua file sementara tema yang tidak digunakan di situs web dan hapus juga dari tema yang tidak menggunakan dan jalankan cache: flush