Tham số bắt buộc 'theme_dir' không được thông qua


61

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?


tôi đã sửa lỗi này bằng cách thay đổi quyền của thư mục chủ đề
taoufiqaitali

đã thử mọi giải pháp, cuối cùng đã cài đặt lại magento
Robert Sinclair

Câu trả lời:


86

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.

BƯỚC 1: Hoạt động tập tin

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.

BƯỚC 2: Hoạt động DB

Đi đến themebảng của bạn và xóa mục cho chủ đề đã tạo của bạn.

Sau đó...

Chuyển đến core_config_databảng của bạn và tìm kiếm themevà bạn sẽ nhận được các bản ghi đường dẫn như design/theme/theme_idthay thế id chủ đề mặc định của bạn trong đó.

BƯỚC 3: Xóa bộ đệm

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 đó.


Cảm ơn. Tôi đã có cùng một vấn đề khi tôi xóa một chủ đề. Đừng quên xóa phần còn lại trong cơ sở dữ liệu. Tôi đã sửa lỗi theme-table, nhưng quên mất core_config_datagiá trị.
Giel Berkers

@GielBerkers: Chào mừng :)
Kaushal Suthar

@KaushalSuthar điều này hoàn toàn không hoạt động thay vào đó quản trị viên chuyển sang định dạng văn bản. Sau đó, sau khi chạy, setup:static-content:deployquản trị viên quay trở lại UI.
Ashwani Shukla

@AshwaniShukla: bạn có thể đã mắc một số sai lầm trong quá trình ...
Kaushal Suthar

@KaushalSuthar lỗi duy nhất tôi mắc phải pub/static/.htaccesslà không có. cảm ơn
Ashwani Shukla

28

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ủ đề .

thay đổi chủ đề cho cửa hàng

Người giới thiệu


Đây cũng có thể là trường hợp nếu thư mục chủ đề của bạn không có quyền thích hợp.
Nathan Moinvaziri

Quyền kiểm tra phải được kiểm tra bởi một số tập lệnh Magento AFAIK, nhưng bạn nói đúng, điều này đủ điều kiện giống nhau: Một thư mục không thể truy cập thường hoạt động tương tự như một thư mục không tồn tại.
hakre

3
Đây không còn là nơi này nằm. Bây giờ trong tab nội dung của nó.
CarComp

@CarComp: Vui lòng cung cấp ảnh chụp màn hình được cập nhật và chỉnh sửa câu trả lời. Khi tôi trả lời, nó đã được ghi lại.
hakre

11

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 themebảng. Vì vậy, đi đến themebảng và xóa bản ghi trỏ đến chủ đề đã xóa.


Làm thế nào bạn xóa từ thư mục nhà cung cấp? Với nhà soạn nhạc bởi composer remove vendor/theme?
hakre

Không, chỉrm -rf vendor/theme
Arvind07

7

Hãy chắc chắn rằng thememụ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


7

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ỏ.


Cảm ơn đã chia sẻ ở độ sâu này. Câu trả lời này hoàn toàn trở thành một Câu hỏi thường gặp, rất hay để xem.
hakre

4

chạy sql UPDATE core_config_data SET value=NULL WHERE path='design/theme/theme_id'

sau đó xóa pub/static/frontend, var/view_preprocessing, var/cache, var/page_cachethư mục.


1

@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.samplethành local.xmlvà 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.


Tôi chỉ gặp lỗi này khi thêm 'bộ đệm' cho cấu hình redis vào env.php. Loại bỏ các thay đổi, và nó hoạt động tốt. Vậy tại sao chỉ khi thêm 'bộ đệm'? Tôi đã kiểm tra cú pháp của mảng và nó ổn. Cùng một bộ đệm => giá trị đang hoạt động trên máy chủ dàn của tôi (cắt / dán)
Scott

1

Lỗi này xảy ra với tôi khi lưu hình ảnh sản phẩm sau khi cài đặt một chủ đề tùy chỉnh.

Tôi đã có chủ đề tùy chỉnh được đặt thành loại ảo, đó là trong DB trong bảng chủ đề, gõ = 1. Trong trường hợp của tôi, tôi không sử dụng chủ đề đó nữa nên tôi đã xóa nó khỏi bảng.


1

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

0

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ể vui lòng cung cấp một kịch bản ví dụ về vấn đề này có thể xảy ra không? Điều duy nhất tôi có thể nghĩ là nếu bố cục được thay đổi thành một tùy chọn chỉ tồn tại trong một chủ đề tùy chỉnh, thì chủ đề đó sẽ bị xóa. Nhưng, nếu điều này xảy ra trong khi chỉ sử dụng bố cục mặc định (hoặc phiên bản sửa đổi của mặc định, sử dụng cùng tên), thì chắc chắn nó có lỗi với chủ đề tùy chỉnh chứ không phải với chính phần mềm magento?
Joshua Lũ

0

Khi bạn đang thêm hoặc chỉnh sửa sản phẩm, hãy chuyển đến phần Thiết kế và thay đổi tùy chọn bố cục.

nhập mô tả hình ảnh ở đây


0

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


0

Tôi gặp vấn đề này khi tôi gỡ bỏ thư mục ứng dụng / desing / adminhtml / theme-name. Đưa nó trở lại giải quyết vấn đề của tôi. Hơn nữa, nó chỉ xảy ra khi tôi cố gắng vào Bảng quản trị.


0

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.


0

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!


0

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 đó.


-1

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.