/** * create method * * Default the form to the current url. add a hidden field for the referer * * @param mixed $model * @param array $options * @return void * @access public */ public function create($model = null, $options = array()) { if (!isset($options['url']) && !isset($options['action'])) { $options['url'] = '/' . ltrim($this->params['url']['url'], '/'); } if (!empty($options['url'])) { $getParams = array_diff_key($this->params['url'], array('ext' => true, 'url' => true)); if ($getParams) { if (is_string($options['url'])) { $options['url'] .= '?' . http_build_query($getParams); } else { $options['url']['?'] = $getParams; } } } $return = parent::create($model, $options); if (!empty($options['noReferer'])) { return $return; } if (!empty($this->data['App']['referer'])) { $referer = $this->data['App']['referer']; } else { $referer = $this->Session->read('referer'); if (!$referer) { $referer = AppController::referer('/', true); if (Router::normalize($referer) == Router::normalize(array('admin' => false, 'controller' => 'users', 'action' => 'login'))) { $referer = '/'; } } } $referer = $this->hidden('App.referer', array('default' => $referer)); if (strpos('fieldset', $return)) { return preg_replace('#</fieldset>#', $referer . '</fieldset>', $return); } return $return . '<div style="display:none;">' . $referer . '</div>'; }
/** * undocumented function * * @return void */ function referer($default = null, $local = true) { return parent::referer($default, $local); }