基本パターン
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'));