Ejemplo n.º 1
0
 public static function launch(&$request)
 {
     $response = new Response();
     $params =& $request->getParams();
     // Si app/controller/action vide => 404
     if (empty($params['module']) || empty($params['controller']) || empty($params['action'])) {
         $response->body = 'URL incompléte';
         $response->send404();
         return $response;
     }
     $moduleName = Url::toClass($params['module']);
     $controllerName = Url::toClass($params['controller']);
     $actionName = Url::toClass($params['action']);
     // Et on lance
     $controller = '\\App\\Modules\\' . $moduleName . '\\Controller\\' . $controllerName . 'Controller';
     if (!class_exists($controller)) {
         $response->body = 'Controleur ' . $controller . ' introuvable';
         $response->send404();
     }
     $oController = new $controller($request, $response);
     if (!method_exists($oController, $actionName)) {
         $response->body = 'Action ' . $actionName . ' introuvable';
         $response->send404();
         return $response;
     }
     $response = $oController->runAction($actionName);
     return $response;
 }
Ejemplo n.º 2
0
 /**
  * Fonction principale pour l'affichage "standard"
  * @return void
  * @param $data Array
  * @param $params Array
  */
 public function render($template, $data = array())
 {
     if (!is_array($template)) {
         $template = Url::selector($template, array('module' => $this->params['module'], 'controller' => $this->params['controller']));
     }
     $moduleName = Url::toClass($template['module']);
     $controllerName = Url::toClass($template['controller']);
     $actionName = Url::toClass($template['action']);
     $template = LI_APP . '/Modules/' . $moduleName . '/View/' . $controllerName . '/' . $actionName . '.php';
     $this->data = $data;
     ob_start();
     include $template;
     $content = ob_get_contents();
     ob_end_clean();
     return $content;
 }
Ejemplo n.º 3
0
 /**
  *
  * @return
  * @param $params Object
  */
 public function render_action($template = null)
 {
     // On envoi les erreurs au js
     if (!empty($this->jsErrors)) {
         $render = new \stdClass();
         $render->code = 'error';
         $render->msg = implode('<br />', $this->jsErrors);
         $this->render_text(json_encode($render));
         return true;
     }
     // on envoi le success au js
     if (!empty($this->jsSuccess)) {
         $render = new \stdClass();
         $render->code = 'success';
         $msgs = array();
         $datas = array();
         foreach ($this->jsSuccess as $s) {
             $msgs[] = $s['msg'];
             $datas = array_merge($datas, $s['datas']);
         }
         $render->msg = implode('<br />', $msgs);
         $render->datas = $datas;
         $this->render_text(json_encode($render));
         return true;
     }
     if (is_null($template)) {
         $template = array('module' => $this->params['module'], 'controller' => $this->params['controller'], 'action' => $this->params['action']);
     }
     // On cherche si ce template est contenu dans un layout
     $layout_name = null;
     $actionName = Url::toClass($this->params['action']);
     if (array_key_exists($actionName, $this->actions_with_layout)) {
         if (!is_null($this->actions_with_layout[$actionName])) {
             $layout_name = $this->actions_with_layout[$actionName];
         }
     } elseif (array_key_exists('Default', $this->actions_with_layout)) {
         $layout_name = $this->actions_with_layout['Default'];
     }
     // Gestion d'un layout
     if (!is_null($layout_name)) {
         $this->data['layout_content'] = $this->view->render($template, $this->data);
         $layout = array('module' => $this->params['module'], 'controller' => 'Layout', 'action' => $layout_name);
         $body = $this->view->render($layout, $this->data);
         // no layout
     } else {
         $body = $this->view->render($template, $this->data);
     }
     $this->finalize_render($body);
 }