Maintenance mode is a crucial part of every site launch; besides, there are tons of other situations when you can use it. Being an essential part of Magento 1.x development, maintenance mode is also available in Magento 2. Below, I will tell you how to enable it in a case of new platform.
The process is almost similar to Magento 1, but you only have to rename local.xml.sample to local.xml within your pub/errors directory. Continue Reading
Unfortunately, the process is not as easy as in Magento 1 ($crumbs = Mage::app()->getLayout->getBlock(‘breadcrumbs’);). In Magento 2, it depends on where you are going to instantiate it from. To create an instance from another block, use the following code:
Please note that in a case of the model you have to create _blockFactory (a protected member), and inject a \Magento\Framework\View\Element\BlockFactory instance in the constructor, assigning it to the member var. For instance:
Since Magento strictly discourages the use of ObjectManager, there are service classes for abstracting it for all scenarios. Thus, you should use factory for all models (non-injectables):
You only have to ask a desired model’s factory in a constructor. Hence, it will be automatically generated, while you run compiler or Magento. Continue Reading
To enable Developer Mode in Magento 2, use SetEnv MAGE_MODE “developer” in your .htaccess file. Please note that this method works only in case when AllowOverride All is situated in a proper <Directory> directive. And don’t forget to check if the Apache process user has write permissions to all necessary directories. Continue Reading
You can easily enable profiler in Magento 2 by adding SetEnv MAGE_PROFILER “html” to .htaccess. Additionally, it is possible to utilize “csvfile” (is situated in your var/log) or “firebug”. Continue Reading
In the same place, create a TestApp.phpfile with the following content:
PHP
1
<?phpclassTestAppextends\Magento\Framework\App\Httpimplements\Magento\Framework\AppInterface{publicfunctionlaunch(){//dirty code goes here. //the example below just prints a class name echo get_class($this->_objectManager->create('\Magento\Catalog\Model\Category')); //the method must end with this line return $this->_response; } public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception) { return false; } }
Call your test.phpfile in a browser to execute everything from TestApp::launch().
The createApplicationmethodfrom the bootstrap class creates an application class instance and expects the implementation of \Magento\Framework\AppInterfacethat contains 2 methods.
You create your own class in TestAppto implement the interface. Since the catchExceptionmethod always returns false, your app don’t handle exceptions. If something goes wrong, print it on a screen.
The implemented launch method is called by \Magento\Framework\App\Bootstrap::run. The runmethod behaves almost the same in spite of what the application passed as a parameter.
$response = $application->launch(); is the only thing that depends on the app. It means that calling \Magento\Framework\App\Bootstrap::runinits the Magento env and calls the launch method from your app. Therefore, put all the dirty code inside this method.
Then, \Magento\Framework\App\Bootstrap::runcalls $response->sendResponse();,where under $responsewe mean everything what the launchmethod returns. Thus, return $this->_response;is required, as it returns an empty response.
The above app class extends\Magento\Framework\App\Httpso you get request, response, and other parameters, but you can omit this by making your class extend nothing. Continue Reading