/**
  * @covers  \Plugin\View::dispatch
  * @covers  \Plugin\View::renderTemplate
  * @depends testCreateView
  */
 public function testSetAndGetValue()
 {
     $testValue = 'test value';
     $view = new View('Plugin/testTemplate');
     $view->setVariable('test', $testValue);
     $result = $view->dispatch();
     $this->assertTrue(is_string($result) && strpos($result, $testValue) !== false);
 }
Example #2
0
 public static function dispatch($class)
 {
     if (!class_exists($class)) {
         include_once 'controllers/' . str_replace('_', '/', $class) . '.php';
     }
     $instance = new $class();
     $params = array_slice(func_get_args(), 1);
     $return = true;
     if (method_exists($instance, 'init')) {
         $return = call_user_func_array(array($instance, 'init'), $params);
     }
     if (!(true === $return)) {
         if (is_string($return) || $return instanceof Url) {
             Url::redirect($return);
         }
         return false;
     }
     $errors = array();
     if (Request::isPost()) {
         $validation = new Validate();
         if ($rules = $instance->validation()) {
             $validation->add($rules);
             $validation->validate();
         }
         if ($validation->valid()) {
             $return = $instance->post();
             if (!(false === $return)) {
                 if (is_string($return) || $return instanceof Url) {
                     Url::redirect($return);
                 }
                 return true;
             }
         }
         $errors = $validation->errors();
     }
     $return = $instance->get();
     if (!(false === $return)) {
         $return['errors'] = $errors;
         $view = new View($class, $return);
         $viewContent = $view->dispatch();
         return $viewContent;
     }
     return false;
 }
 /**
  * Show error page after non-recoverable error
  *
  * @param string $error
  * @param int $code
  * @param string $trace
  * @return void
  */
 public static function showError($error, $code, $trace = '')
 {
     if ($code != self::ERROR_404) {
         $code = self::ERROR_500;
     }
     $view = new View('Plugin/' . 'error_' . $code);
     $view->setLayout('error');
     $view->setVariable('error', $error);
     $view->setVariable('trace', $trace);
     $view->setTerminal(\Request\Service::isTerminalRequest());
     echo $view->dispatch();
 }