Blog\Plugin\CommentForm::__invoke PHP Метод

__invoke() публичный Метод

Invoke form
public __invoke ( ) : void
Результат void
    public function __invoke()
    {
        $request = $this->getRequest();
        if ($request->isPost()) {
            $post = $request->getPost();
            $this->getForm()->setData($post);
            if ($this->getForm()->isValid()) {
                $commentTable = new Blog\Model\Comment();
                $document = $this->getServiceLocator()->get('Zend\\View\\Renderer\\PhpRenderer')->plugin('CurrentDocument');
                if ($commentTable->add($this->getForm()->getInputFilter()->getValues(), $document()->getId())) {
                    $this->flashMessenger()->addSuccessMessage('Message sent');
                    return $this->redirect()->toUrl($request->getRequestUri());
                }
            }
        }
        return $this->addPath(__DIR__ . '/../views')->render('plugin/comment-form.phtml', array('form' => $this->getForm(), 'errorMessage' => 'Error'));
    }

Usage Example

Пример #1
0
 /**
  * Test
  *
  * @return void
  */
 public function testInvokeWithPostData()
 {
     $request = Registry::get('Application')->getRequest();
     $request->setMethod('POST');
     //form is not valid
     $this->assertInternalType('string', $this->object->__invoke());
     //Building request
     $this->object->plugin('layout')->setController($this->getMockForAbstractClass('\\Zend\\Mvc\\Controller\\AbstractController'));
     $this->object->plugin('redirect')->setController($this->getMockForAbstractClass('\\Zend\\Mvc\\Controller\\AbstractController'));
     $this->object->plugin('redirect')->getController()->setEvent(Registry::get('Application')->getMvcEvent());
     $serviceManager = Registry::get('Application')->getServiceManager();
     $renderer = $serviceManager->get('Zend\\View\\Renderer\\PhpRenderer');
     $serviceManager->setAllowOverride(true);
     $serviceManager->setService('currentDocument', $this->document);
     $serviceManager->setAllowOverride(false);
     $inputFilterFactory = new InputFilterFactory();
     $inputFilter = $inputFilterFactory->createInputFilter(array('show_email' => array('name' => 'show_email', 'required' => false), 'username' => array('name' => 'username', 'required' => false), 'email' => array('name' => 'email', 'required' => false), 'message' => array('name' => 'message', 'required' => false)));
     $captcha = $this->object->getForm()->setInputfilter($inputFilter);
     $post = $request->getPost();
     $data = array('show_email' => true, 'username' => 'username', 'email' => '*****@*****.**', 'message' => 'message', 'captcha' => 'test');
     foreach ($data as $key => $value) {
         $post->set($key, $value);
     }
     $this->assertInstanceOf('Zend\\Http\\PhpEnvironment\\Response', $this->object->__invoke());
     foreach (glob(__DIR__ . '/_files/*') as $file) {
         unlink($file);
     }
 }