Wednesday, June 4, 2014

Using Logger to Save Error Exception in log file

Three step to create log file 

Step 1-

 On root folder create following folder structure
 
/data/log/


Step 2-

Module.php file insert following function

public function onBootstrap(MvcEvent $e)
{
    $eventManager = $e->getApplication()->getEventManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);
    /**
     * Log any Uncaught Exceptions, including all Exceptions in the stack
     */
    $sharedManager = $e->getApplication()->getEventManager()->getSharedManager();
    $sm = $e->getApplication()->getServiceManager();
    $sharedManager->attach('Zend\Mvc\Application', 'dispatch.error',
         function($e) use ($sm) {
            if ($e->getParam('exception')){
                $ex = $e->getParam('exception');
                do {
                    $sm->get('Logger')->crit(
                        sprintf(
                           "%s:%d %s (%d) [%s]\n", 
                            $ex->getFile(), 
                            $ex->getLine(), 
                            $ex->getMessage(), 
                            $ex->getCode(), 
                            get_class($ex)
                        )
                    );
                }
                while($ex = $ex->getPrevious());
            }
         }
    );
}
 
Step 3-
 
global.php file insert following code
 
'factories' => array(
    'Logger' => function($sm){
        $logger = new \Zend\Log\Logger;
        $writer = new \Zend\Log\Writer\Stream('./data/log/'.date('Y-m-d').'-error.log');
        $logger->addWriter($writer);  

        return $logger;
    },
 
  

Thursday, January 16, 2014

Call different layout for different controller action

Change layout in the controller 

public function somethingAction (){

    // statements

   $this->layout('layout/different');

}

How to handle the meta title,description/keywords in a Zend Framework 2 application?

To inject Title, Meta Keywords, Meta Description

Layput file code -

layout.phtml

<html>
<head>
<?php echo $this->headTitle(); ?>

<!-- Display Meta Keywords and Description along with Viewport -->

<?php echo $this->headMeta()->appendName('viewport', 'width=device-width, initial-scale=1.0') ?>

<meta charset="utf-8">

</head>
<body>
...
</body>
</html>

Do following code in the Controller like this:

public function indexAction()

{

 $renderer = $this->getServiceLocator()->get('Zend\View\Renderer\PhpRenderer');

 $renderer->headTitle('Head Title');

 $renderer->headMeta()->appendName('keywords', 'Meta Keywords');

 $renderer->headMeta()->appendName('description', 'Meta Description');

 return new ViewModel();

}

Thursday, October 10, 2013

Zend Framework 2.22 : How to remove public folder from URL


We can remove public from URL within 2 Steps :


1.Copy and paste all public folder files and folders into your project root directory.

2.Now make changes on index.php file

chdir(dirname(__DIR__).'/yourwebsiterootfoldername');


Now your ZF2 project start working without public folder reference something like this.

http://localhost/yourwebsiterootfoldername/cms/index