Qual è il messaggio di errore:
Il parametro richiesto 'theme_dir' non è stato passato
È correlato a Magento 2? E come si può risolvere questo problema?
Qual è il messaggio di errore:
Il parametro richiesto 'theme_dir' non è stato passato
È correlato a Magento 2? E come si può risolvere questo problema?
Risposte:
Nel caso in cui si rimuova il tema direttamente (non in modo Magento).
Quindi seguire questi passaggi.
Elimina il contenuto da app/design/frontend/<Vendor>
(assicurati di eseguire prima il backup).
Elimina tutto il contenuto della cartella var/view_preprocessed
& pub/static/frontend
.
Vai alla tua theme
tabella ed elimina la voce per il tema creato.
Dopo di che...
Vai alla tua core_config_data
tabella e cerca theme
e otterrai record di percorso come design/theme/theme_id
sostituire l'id del tema predefinito in esso.
Svuota la cache php bin/magento cache:flush
Fammi sapere se hai ancora problemi dopo.
theme
tabella, ma ho dimenticato il core_config_data
valore.
setup:static-content:deploy
admin è tornato all'interfaccia utente.
pub/static/.htaccess
stato non c'era. grazie
Questo messaggio di errore indica che è stato configurato un tema che non esiste più nel file system.
Può essere facilmente risolto selezionando invece un tema valido. Vai a Contenuto -> Configurazione , seleziona l'ambito (globale, sito Web, store_view) e cambia il tema. Dopo averlo fatto, dovresti rimuoverlo anche da Contenuto -> Temi .
Nel mio caso ho eliminato un tema figlio dalla directory del fornitore. Ma la voce DB era ancora lì nella theme
tabella. Quindi vai alla theme
tabella ed elimina il record che punta al tema eliminato.
composer remove vendor/theme
?
rm -rf vendor/theme
Assicurarsi che la theme
voce della tabella e la magento\app\design\frontend\<Vendor>
voce siano uguali.
Altrimenti causa questo problema.
Rimuovi il tema non necessario tramite Admin -> Contenuto -> Design -> Temi . Cancellalo. Quindi rimuoverà anche la voce DB.
Se rimuovi solo la cartella, non funzionerà
Questo problema può verificarsi anche in uno stato emulato, ad esempio in un comando CLI. Ho avuto una situazione in cui non riuscivo a inviare un'e-mail nella CLI, perché il comando wrapping era in esecuzione in uno stato emulato:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
Nell'esempio sopra, quando l'e-mail stava provando a determinare la sua directory modello, sarebbe mappata a global/Magento/backend
, che è inesistente. Per risolvere questo problema, ho dovuto aggiungerlo manualmente nel mio costruttore:
/** @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')
);
Dopo questa correzione, il problema è stato risolto e ho potuto inviare l'e-mail.
Aggiornare:
Quando si tratta di inviare posta utilizzando l'interfaccia della riga di comando, un approccio più appropriato sarebbe quello di utilizzare l'emulazione. Per esempio:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
In questo modo non devi affrontare i tuoi piccoli hack sporchi.
@hakre è corretto. Ho avuto lo stesso errore Required parameter 'theme_dir' was not passed
. Di seguito spiego cosa ho fatto per causare l'errore:
Ho creato un tema nella directory app / design / frontend / MyVendorTheme2 / myThemeName2 e poi l'ho configurato selezionando il tema " MyVendorTheme2 - myThemeName2 " nel browser di amministrazione di Magento 2 ( Store> Configurazione> IMPOSTAZIONI TEMA> GENERALE> Design> Tema di progettazione ) . Ma poi ho deciso di spostare la directory " myThemeName2 " (contenente il mio nuovo tema) in una cartella del fornitore (esistente) diversa " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2 , e rimossa dalla cartella " MyVendorTheme2 " dove era prima. Ho proceduto alla compilazione di risorse (ad es grunt clean
. grunt exec:myThemeName2
,grunt less:myThemeName2
), quindi ho aperto il browser nel mio sottodominio del tema (ovvero http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).
Inizialmente ho ricevuto un errore non specificato:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
Ho abilitato la segnalazione degli errori rinominando pub/errors/local.xml.sample
in local.xml
e aggiornato la pagina. Mi è stato quindi presentato l'errore Required parameter 'theme_dir' was not passed
.
Ho risolto l'errore tornando nel mio browser di amministrazione Magento 2 ( Negozi> Configurazione> IMPOSTAZIONI TEMA> GENERALE> Design> Tema di progettazione ), che aveva selezionato il mio tema di progettazione precedente e ora non valido, quindi ho scelto quello corretto.
Questo errore mi è successo durante il salvataggio delle immagini dei prodotti dopo l'installazione di un tema personalizzato.
Avevo il tema personalizzato impostato come tipo virtuale, ovvero nel DB nella tabella dei temi, tipo = 1. Nel mio caso non utilizzavo più il tema, quindi l'ho eliminato dalla tabella.
1 - Utilizzare il comando seguente per identificare i temi nel pannello di amministrazione.
n98-magerun2 dev:theme:list
2 - Esegui il comando per identificare i temi installati:
ls -lha app/design/frontend/MyThemePackage/
3- Eseguire questi comandi di seguito per creare il tema che non esiste:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Se nulla ha funzionato, non dimenticare di controllare la sezione delle categorie. Ci sono anche impostazioni di progettazione. Assicurarsi che sia assegnato il tema di progettazione corretto. Nel mio caso, ho riscontrato l'errore solo su alcune categorie.
È possibile rimuovere direttamente il tema non utilizzato dal DB eseguendo questa query di seguito:
delete from theme where theme_path in ('unusedtheme');
whene unusedtheme è il tema inutilizzato e dopo aver cancellato la cache
In alcuni casi si elimina il tema personalizzato in modo corretto, quindi si dovrà affrontare anche questo errore. In questa situazione:
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'
Aggiorna l'errore della pagina sparito.
Ho risolto il problema. Nel mio caso il problema non era Magento2 ma un'operazione sbagliata che ho fatto tempo fa come segue: ho creato un tema creando il relativo percorso in app / design / frontend / MyFolder / MyTheme e registrato come spiegato nella documentazione online di Magento 2. Quindi ho deciso di annullare il tema e invece di utilizzare il comando appropriato: bin / magento theme: disinstallare frontend / MyFolder / MyTheme Ho eliminato direttamente le cartelle. Questa non è una buona operazione poiché il database non viene aggiornato con le informazioni dovute. Soluzione: con un editor di database come phpmyadmin, eliminare il record nella tabella "Tema" corrispondente alle cartelle eliminate. Spero che questo possa aiutare!
So che questa domanda è piuttosto vecchia, ma dal momento che mi sono imbattuto in questo proprio oggi e ho scoperto rapidamente quale fosse il mio problema, ho deciso di pubblicare la mia risposta come promemoria per tutti coloro che, come me, usano PhpStorm per lavorare con Magento: ricordati di controllare i tuoi file quando cambi ramo.
Nel mio caso, il ramo su cui stavo lavorando non aveva i file dei temi richiesti (sono stati nascosti da PhpStorm quando sono passato dal ramo del tema al ramo principale) perché non sono stati ancora uniti su di esso, quindi il errore.
Spero che questo possa aiutare qualcuno.
elimina tutti i file temporanei del tema che non utilizza sul sito Web ed elimina anche dal tema che non utilizza ed esegui cache: flush