/** * Validateを行う * * @param array $params Validateする条件が入った配列 * @access public **/ function execute($params) { if (!is_array($params) || count($params) < 1) { return true; } // ValidatorのListを生成 ValidatorManager::_buildValidatorList($params); // Validateを実行 ValidatorManager::_validate($params); return true; }
/** * Execute this filter. * * @param FilterChain The filter chain. * * @return void * * @throws <b>InitializeException</b> If an error occurs during view * initialization. * @throws <b>ViewException</b> If an error occurs while executing * the view. * * @author Sean Kerr (skerr@mojavi.org) * @since 1.0.0 */ public function execute($filterChain) { static $context, $controller, $validatorManager; if (!isset($context)) { // get the context and controller $context = $this->getContext(); $controller = $context->getController(); // create validator manager $validatorManager = new ValidatorManager(); $validatorManager->initialize($context); } else { // clear the validator manager for reuse $validatorManager->clear(); } // get the current action instance $actionEntry = $controller->getActionStack()->getLastEntry(); $actionInstance = $actionEntry->getActionInstance(); // get the current action information $moduleName = $context->getModuleName(); $actionName = $context->getActionName(); // get the request method $method = $context->getRequest()->getMethod(); if (($actionInstance->getRequestMethods() & $method) != $method) { // this action will skip validation/execution for this method // get the default view $viewName = $actionInstance->getDefaultView(); } else { // set default validated status $validated = true; // get the current action validation configuration $validationConfig = MO_MODULE_DIR . '/' . $moduleName . '/validate/' . $actionName . '.ini'; if (is_readable($validationConfig)) { // load validation configuration // do NOT use require_once $validationConfig = 'modules/' . $moduleName . '/validate/' . $actionName . '.ini'; require ConfigCache::checkConfig($validationConfig); } // manually load validators $actionInstance->registerValidators($validatorManager); // process validators $validated = $validatorManager->execute(); // process manual validation if ($validated && $actionInstance->validate()) { // execute the action $viewName = $actionInstance->execute(); } else { // validation failed $viewName = $actionInstance->handleError(); } } if ($viewName != View::NONE) { if (is_array($viewName)) { // we're going to use an entirely different action for this view $moduleName = $viewName[0]; $viewName = $viewName[1]; } else { // use a view related to this action $viewName = $actionName . $viewName; } // display this view if (!$controller->viewExists($moduleName, $viewName)) { // the requested view doesn't exist $file = MO_MODULE_DIR . '/' . $moduleName . '/views/' . $viewName . 'View.class.php'; $error = 'Module "%s" does not contain the view "%sView" or ' . 'the file "%s" is unreadable'; $error = sprintf($error, $moduleName, $viewName, $file); throw new ViewException($error); } // get the view instance $viewInstance = $controller->getView($moduleName, $viewName); // initialize the view if ($viewInstance->initialize($context)) { // view initialization completed successfully $viewInstance->execute(); // render the view and if data is returned, stick it in the // action entry which was retrieved from the execution chain $viewData =& $viewInstance->render(); if ($controller->getRenderMode() == View::RENDER_VAR) { $actionEntry->setPresentation($viewData); } } else { // view failed to initialize $error = 'View initialization failed for module "%s", ' . 'view "%sView"'; $error = sprintf($error, $moduleName, $viewName); throw new InitializationException($error); } } }