Max Allan Niklasson Posted December 7, 2020 Posted December 7, 2020 So I've been working on this module https://github.com/maxa11an/processwire-body-builder but then I decided to split it up into multiple files for better overlooking of the module it self. But when I try to install either MarkupBodyBuilder or ProcessBodyBuilder I end up with Allowed memory size of 2147483648 bytes exhausted (tried to allocate 262144 bytes) in .../wire/core/Modules.php on line 2480 Afaik I don't need a className-method, but then I studied through all docs regarding module-dev and also went through a lot of integrated modules, but no luck there. So I was hoping on some advise of what I've missed or things to think about?
kongondo Posted December 7, 2020 Posted December 7, 2020 (edited) @Max Allan Niklasson, Welcome to the forums. I just had a quick look but you are basically caught in an infinite loop with all those includes. You have this: In MarkupBodyBuilder.module <?php public function init() { include_once __DIR__ . "/vendor/autoload.php"; include_once __DIR__ . "/BodyBuilder.module";// <==== THIS $this->addHookAfter("Fields::save", $this, 'hookWhenFieldSaved'); $this->addHookAfter("Field::getInputfield", $this, 'hookHideTitle'); $this->addHookAfter('Page::renderField', $this, 'hookRenderField'); $this->twig = new Environment(new ArrayLoader(), [ 'autoescape' => false, 'debug' => $this->config->debug ]); $this->twig->addExtension(new DebugExtension()); return parent::init(); } In ProcessBodyBuilder.module <?php public function init() { include_once __DIR__ . "/BodyBuilder.module";// <==== THIS $process = $this->wire('process'); if ("$process" === "$this") { $this->headline($this->moduleInfo['page']['title']); } return parent::init(); } In BodyBuilder.module <?php namespace ProcessWire; use Exception; include_once "MarkupBodyBuilder.module";// <== THIS include_once "ProcessBodyBuilder.module";// <== THIS That is not how you reference other installed modules in ProcessWire; Call them like this where you need them: <?php // inside a class $bodyBuilder = $this->wire('modules')->get('BodyBuilder'); // outside a class // $bodyBuilder = $modules->get('BodyBuilder'); // outside a class but inside a function // $bodyBuilder = wire('modules')->get('BodyBuilder'); More info https://processwire.com/api/ref/module/ Edited December 7, 2020 by kongondo 1
Max Allan Niklasson Posted December 7, 2020 Author Posted December 7, 2020 @kongondo thanks for your reply, I did as you mentioned but it didn't help. Although after some fresh air I went back and check the moduleInfo's requires parameters and it turned out that was what created the error, works smoothly now! ? 2
kongondo Posted December 7, 2020 Posted December 7, 2020 4 minutes ago, Max Allan Niklasson said: works smoothly now! ? Glad you got it sorted! ?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now