Thông báo lỗi là gì:
Tham số bắt buộc 'theme_dir' không được thông qua
Có liên quan đến trong Magento 2 không? Và làm thế nào vấn đề này có thể được sửa chữa?
Thông báo lỗi là gì:
Tham số bắt buộc 'theme_dir' không được thông qua
Có liên quan đến trong Magento 2 không? Và làm thế nào vấn đề này có thể được sửa chữa?
Câu trả lời:
Chỉ trong trường hợp nếu bạn đang xóa chủ đề trực tiếp (Không phải theo cách Magento).
Sau đó làm theo các bước sau.
Xóa nội dung khỏi app/design/frontend/<Vendor>
(đảm bảo bạn sao lưu nội dung trước).
Xóa tất cả nội dung của thư mục var/view_preprocessed
& pub/static/frontend
.
Đi đến theme
bảng của bạn và xóa mục cho chủ đề đã tạo của bạn.
Sau đó...
Chuyển đến core_config_data
bảng của bạn và tìm kiếm theme
và bạn sẽ nhận được các bản ghi đường dẫn như design/theme/theme_id
thay thế id chủ đề mặc định của bạn trong đó.
Xóa bộ nhớ cache của bạn php bin/magento cache:flush
Hãy cho tôi biết nếu bạn vẫn phải đối mặt với bất kỳ vấn đề sau đó.
theme
-table, nhưng quên mất core_config_data
giá trị.
setup:static-content:deploy
quản trị viên quay trở lại UI.
pub/static/.htaccess
là không có. cảm ơn
Thông báo lỗi này có nghĩa là bạn có một chủ đề được cấu hình không tồn tại trên hệ thống tệp (bất kỳ nữa).
Nó có thể dễ dàng sửa chữa bằng cách chọn một chủ đề hợp lệ thay thế. Chuyển đến Nội dung -> Cấu hình , chọn phạm vi (toàn cầu, trang web, store_view) và thay đổi chủ đề. Sau khi hoàn thành, bạn cũng nên xóa nó khỏi Nội dung -> Chủ đề .
Trong trường hợp của tôi, tôi đã xóa một chủ đề con khỏi thư mục Nhà cung cấp. Nhưng mục DB vẫn còn đó trong theme
bảng. Vì vậy, đi đến theme
bảng và xóa bản ghi trỏ đến chủ đề đã xóa.
composer remove vendor/theme
?
rm -rf vendor/theme
Hãy chắc chắn rằng theme
mục nhập & magento\app\design\frontend\<Vendor>
mục nhập sẽ giống nhau.
Nếu không nó gây ra vấn đề này.
Xóa chủ đề không cần thiết thông qua Quản trị viên -> Nội dung -> Thiết kế -> Chủ đề . Xóa đi. Vì vậy, nó sẽ loại bỏ DB Entry là tốt.
Nếu bạn chỉ xóa thư mục thì nó sẽ không hoạt động
Vấn đề này cũng có thể xảy ra khi bạn ở trạng thái mô phỏng, ví dụ như trong lệnh CLI. Tôi đã có một tình huống mà tôi không thể gửi e-mail trong CLI, bởi vì lệnh gói đang chạy trong trạng thái mô phỏng:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
Trong ví dụ trên, khi e-mail đang cố xác định thư mục mẫu của nó, nó sẽ ánh xạ tới global/Magento/backend
, không tồn tại. Để khắc phục điều này, tôi đã phải thêm nó thủ công vào hàm tạo của mình:
/** @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')
);
Sau khi sửa lỗi này, vấn đề đã được giải quyết và tôi có thể gửi e-mail.
Cập nhật:
Khi nói đến việc gửi thư bằng CLI, một cách tiếp cận phù hợp hơn sẽ là sử dụng mô phỏng. Ví dụ:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
Bằng cách này, bạn không cần phải hack nhỏ.
@hakre đúng rồi. Tôi đã nhận được cùng một lỗi Required parameter 'theme_dir' was not passed
. Dưới đây tôi giải thích những gì tôi đã làm để gây ra lỗi:
Tôi tạo một chủ đề trong thư mục app / design / frontend / MyVendorTheme2 / myThemeName2 , sau đó định cấu hình nó bằng cách chọn chủ đề " MyVendorTheme2 - myThemeName2 " trong trình duyệt Quản trị Magento 2 ( Cửa hàng> Cấu hình> THEME SETTINGS> GENITH > Design ) . Nhưng sau đó tôi đã quyết định chuyển thư mục " myThemeName2 " (chứa chủ đề mới của tôi) sang thư mục nhà cung cấp khác (hiện tại) " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2 và xóa nó khỏi thư mục " MyVendorTh2 " đó là trước kia. Tôi tiến hành biên dịch tài sản (ví dụ grunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
), và sau đó mở trình duyệt của tôi tại tên miền phụ chủ đề của tôi (ví dụ : http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).
Ban đầu tôi gặp một lỗi không xác định:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
Tôi đã bật báo cáo lỗi bằng cách đổi tên pub/errors/local.xml.sample
thành local.xml
và làm mới trang. Sau đó tôi đã được trình bày với các lỗi Required parameter 'theme_dir' was not passed
.
Tôi đã khắc phục lỗi bằng cách quay lại trình duyệt Quản trị Magento 2 của mình ( Cửa hàng> Cấu hình> CÀI ĐẶT> CHUNG> Thiết kế> Chủ đề thiết kế ), đã chọn chủ đề thiết kế trước đây và bây giờ không hợp lệ, vì vậy tôi đã chọn đúng.
1 - Sử dụng lệnh bên dưới để xác định các chủ đề trong bảng quản trị.
n98-magerun2 dev:theme:list
2 - Chạy lệnh để xác định các chủ đề đã cài đặt:
ls -lha app/design/frontend/MyThemePackage/
3- Chạy các lệnh dưới đây để tạo chủ đề không tồn tại:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Nếu không có gì hiệu quả, đừng quên kiểm tra phần danh mục. Có một thiết lập thiết kế ở đó quá. Hãy chắc chắn rằng chủ đề thiết kế chính xác được chỉ định. Trong trường hợp của tôi, tôi chỉ nhận được lỗi trên một số danh mục.
Bạn có thể xóa trực tiếp chủ đề không sử dụng khỏi DB bằng cách thực hiện truy vấn bên dưới:
delete from theme where theme_path in ('unusedtheme');
khi nào không sử dụng là chủ đề không được sử dụng và sau đó bạn sẽ xóa bộ nhớ cache của mình
Trong một số trường hợp bạn xóa chủ đề tùy chỉnh theo cách phù hợp thì bạn cũng sẽ gặp phải lỗi này. Trong tình huống này:
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'
Làm mới lỗi trang đi.
Tôi đã giải quyết vấn đề. Trong trường hợp của tôi, vấn đề không phải là Magento2 mà là một thao tác sai mà tôi đã làm trước đây như sau: Tôi đã tạo một chủ đề tạo đường dẫn tương đối trong ứng dụng / thiết kế / frontend / MyFolder / MyTheme và đăng ký nó như được giải thích trong tài liệu trực tuyến Magento 2. Sau đó, tôi quyết định hủy chủ đề và thay vào đó để sử dụng lệnh thích hợp: chủ đề bin / magento: gỡ cài đặt frontend / MyFolder / MyTheme tôi đã xóa các thư mục trực tiếp. Đây không phải là một hoạt động tốt vì cơ sở dữ liệu không được cập nhật với thông tin do. Giải pháp: với trình soạn thảo cơ sở dữ liệu là phpmyadmin, xóa bản ghi trong bảng "Chủ đề" phù hợp với các thư mục đã xóa. Hy vọng điều này có thể giúp cho bạn!
Tôi biết câu hỏi này khá cũ, nhưng vì tôi mới gặp vấn đề này hôm nay và nhanh chóng phát hiện ra vấn đề của mình là gì, tôi quyết định đăng câu trả lời của mình như một lời nhắc nhở cho tất cả những người, như tôi, sử dụng PhpStorm để làm việc với Magento: nhớ kiểm tra các tập tin của bạn khi chuyển đổi chi nhánh.
Trong trường hợp của tôi, nhánh mà tôi đang làm việc không có các tệp chủ đề bắt buộc (chúng đã bị PhpStorm chặn khi tôi thay đổi từ nhánh chủ đề sang nhánh chính) vì vậy chúng chưa được hợp nhất trên đó, do đó lỗi.
Hy vọng điều này có thể giúp một ai đó.
xóa tất cả các tệp tạm thời của chủ đề không sử dụng trên trang web và cũng xóa khỏi chủ đề không sử dụng và chạy bộ đệm: tuôn ra