What’s your approach for quick & dirty testing in Magento2?
- Creating a test module with a controller and executing it from the browser to see the output?
- Creating a Console module and executing via CLI?
Obviously, the above two approach takes time.
Rather I would create a simple script (a single file) and put it somewhere in /[path-to-magento2]/pub/sandbox.php
<?php
/**
* @author Raj KB<[email protected]>
* @website https://www.magepsycho.com
*/
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require __DIR__ . '/../app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
// Your quick and dirty code goes here...
$quote = $obj->get('Magento\Checkout\Model\Session')->getQuote()->load(1);
Zend_Debug::dump($quote->getOrigData());
Now you can easily test by pointing to URL
http://[magento2-url]/sandbox.php
But wait,
this won’t work in the case when you are using Nginx + PHP-FPM server.
The reason you can see from the Nginx conf file: [path/to/magento2]/nginx.conf.sample
...
# PHP entry point for main application
location ~ (index|get|static|report|404|503)\.php$ {
try_files $uri =404;
fastcgi_pass fastcgi_backend;
fastcgi_buffers 1024 4k;
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=768M \n max_execution_time=600";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
...
As you can see only PHP files: index.php, get.php, static.php, report.php, 404.php & 503.php files are parsed by the PHP-FPM.
In order to include your sandbox.php in the whitelist, just edit the line of Nginx conf file:
location ~ (index|get|static|report|404|503)\.php$ {
to
location ~ (index|get|static|report|404|503|sandbox)\.php$ {
And don’t forget to reload or restart your Nginx server depending upon your Operating System.
Ubuntu
sudo service nginx reload
sudo service nginx restart
MacOSx
sudo nginx -s reload
sudo nginx -s stop && sudo nginx
What’s your approach for quick & dirty testing in Magento2?
Please comment below.