基本パターン
if ($this->hasRequestParameter('xxx')) { $this->model->setXxx($this->getRequestParameter('xxx')); }
または
if ($this->getRequestParameter('xxx') !== null) { $this->model->setXxx($this->getRequestParameter('xxx')); }
※チェックボックスの場合は、チェックボックスを含むフォームを処理するアクションで、以下のようにデフォルトをセットする必要がある。
if (!$this->hasRequestParameter('xxx')) { $this->getRequest()->setParameter('xxx', false); }
または
if ($this->getRequestParameter('xxx') == null) { $this->getRequest()->setParameter('xxx', false); }
日付
(input_date_tag, select_day_tag+select_month_tag+select_year_tag)
if ($this->hasRequestParameter('date')) // または if ($this->getRequestParameter('date') !== null) { if ($this->getRequestParameter('date')) { try { $dateFormat = new sfDateFormat($this->getUser()->getCulture()); if (!is_array($this->getRequestParameter('date'))) { $value = $dateFormat->format($this->getRequestParameter('date'), 'i', $dateFormat->getInputPattern('d')); } else { $value_array = $this->getRequestParameter('date'); if (is_numeric($value_array['year']) && is_numeric($value_array['month']) && is_numeric($value_array['day'])) { $value = $value_array['year'].'-'.$value_array['month'].'-'.$value_array['day'].(isset($value_array['hour']) ? ' '.$value_array['hour'].':'.$value_array['minute'].(isset($value_array['second']) ? ':'.$value_array['second'] : '') : ''); } else { $value = null; } } $this->model->setDate($value); } catch (sfException $e) { // not a date } } else { $this->model->setDate(null); } }
日付時刻
日付とほぼ同じだが、値をテキストで受け取った場合(rich=true)のフォーマット引数が異なる。
$value = $dateFormat->format($this->getRequestParameter('date'), 'i', $dateFormat->getInputPattern('d'));
日付時刻
$value = $dateFormat->format($this->getRequestParameter('date'), 'I', $dateFormat->getInputPattern('g'));