Beispiel #1
0
 /**
  * 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);
 }