Related issue, I have been trying to apply related solution to my project, however I am not able to execute
Module::getInstanceByName('modulename');
I do not even have access to Module class, which makes it hard for me to access application context and my own module context
class_exists('Module')
Returns false.
I also provide the directory structure of my module from which I am attempting to access Module.
├── mymodule.php
├── config.xml
└── somedirectory
└── index.php
Where mymodule.php follows the module class guidelines and index.php is just php file in which I attempt to access other modules. most important for me is to access the context of my own module so that I can retrieve for example it's version and other settings.
Example of index.php from my testmodule, this example is for 1.4 but I am also willing to have it working for 1.5 and 1.6
require('../../../config/settings.inc.php');
require('../../../classes/Module.php');
$instance = Module::getInstanceByName('mymodule');
This crashes, and when I use
require('../../../config/settings.inc.php');
require('../../../classes/Module.php');
if (class_exists('Module')) {
echo "class exists";
} else {
echo "class does not exists";
}
It outputs class does not exists.
The reason I require ../../../config/settings.inc.php is to demonstrate that there are some classes I can require and it works. I am able to access constants defined inside of settings.inc.php
So the file at relative path ../../../classes/Module.php exists and it contains
...
public static function getInstanceByName($moduleName)
...
Module class to access instance of particular module just as suggested here. What is the proper way of loading Prestashop classes from within an arbitrary file in the custom module.../../../config/settings.inc.php using require and it doesn't apply to ../../../classes/Module.php?1.4, however I would like to know if can this be applied also for 1.5 and 1.6, I noticed that for those versions classes/module.php does not exists instead there is classes/module/Module.php. General solution would be the best.If you call your index.php file directly (http://www.example.com/modules/mymodule/somedirectory/index.php) you're not using Prestashop internal Dispatcher. This means that Prestashop is not loaded when your index.php script is executed.
If you want to load Prestashop your first need to include /config/config.inc.php:
require('../../../config/config.inc.php');
if (class_exists('Module')) {
echo "class exists";
} else {
echo "class does not exists";
}
If you want to use Prestashop standard Dispatcher process, you will have to create a ModuleFrontController.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With