protected function build(array $data, $prefix = null) { if ($this->csrf && $this->csrfInstance instanceof \rock\csrf\CSRF) { if (empty($data['query'])) { $data['query'] = []; } $data['query'][$this->csrfInstance->csrfParam] = $this->csrfInstance->get(); } if (!empty($data['query'])) { $data['query'] = preg_replace('/%5B[0-9]+%5D/i', '%5B%5D', http_build_query($data['query'])); } else { unset($data['query']); } if (empty($data['fragment'])) { unset($data['fragment']); } return $prefix . http_build_url($data); }
protected function clientOptions(array $options) { if (!$this->enableClientValidation) { return $options; } if (!isset($options['data']['ng-init'])) { $options['data']['ng-init'] = []; } if (isset($options['data']['ng-init']) && !is_array($options['data']['ng-init'])) { throw new WidgetException(WidgetException::NOT_ARRAY, ['name' => 'param "ng-init"']); } if (!empty($this->modelName)) { $options['name'] = $this->modelName; if (!isset($options['data']['ng-init']['formName'])) { $options['data']['ng-init']['formName'] = $this->modelName; } } if ($this->validateOnChanged) { $options['data']['ng-init']['validateOnChanged'] = true; } if ($this->csrf instanceof \rock\csrf\CSRF) { if (!isset($options['hiddenCsrf']['data'])) { $options['hiddenCsrf']['data'] = []; } if (!isset($options['hiddenCsrf']['data']['ng-model'])) { $options['hiddenCsrf']['data']['ng-model'] = (isset($this->modelName) ? $this->modelName : 'form') . ".values.{$this->csrf->csrfParam}"; } if (!isset($options['hiddenCsrf']['data']['ng-value'])) { $options['hiddenCsrf']['data']['ng-value'] = "rock.csrf.getToken() || '" . $this->csrf->get() . "'"; } } $options['data']['ng-submit'] = "submit('{$this->clientAction}', \$event)"; return $options; }
protected function getMessageLogout(CSRF $CSRF, $key, $layout = '@common.views/elements/alert-info') { $args = [$CSRF->csrfParam => $CSRF->get(), 'service' => 'logout']; $content = i18n::t($key, ['url' => Url::set()->addArgs($args)->getRelative()]); return $this->template->getChunk($layout, ['output' => $content]); }