Więcej informacji znajdziesz tutaj oraz na

<?php
/**
* example actions.
*
* @package portfolio
* @subpackage example
* @author Piotr Śliwa
* @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
*/
class exampleActions extends psActions
{
public function executeIndex(sfWebRequest $request)
{
if($request->getParameter('source') == 'controller')
{
$this->source = highlight_file(__FILE__, true);
}
elseif($request->getParameter('source') == 'form')
{
$this->source = highlight_file(dirname(__FILE__).'/../lib/PageableForm.class.php', true);
}
}
public function executePageableForm(sfWebRequest $request)
{
$strategyName = $request->getParameter('strategy');
$form = $this->createForm();
$strategy = $this->createStrategy($strategyName);
$form->setPersistanceStrategy($strategy);
$this->process($form, $request);
$this->strategyName = $strategyName;
$this->form = $form;
}
public function executePageableFormConditionalWay(sfWebRequest $request)
{
$strategy = $this->createStrategy('session');
$form = new PageableForm();
$form->setPersistanceStrategy($strategy);
$this->process($form, $request);
$this->form = $form;
}
private function createForm()
{
$form = new psPageableForm();
$form->setNameFormat('form[%s]');
$form->setUseGlobalNamespace(false);
$form1 = new Form1(array(), array(), false);
$form->addForm($form1);
$form2 = new Form2(array(), array(), false);
$form->addForm($form2);
$form3 = new Form5();
$form->addForm($form3);
return $form;
}
private function createStrategy($strategyName)
{
switch($strategyName)
{
case 'session':
$strategy = new psPageableFormSessionPersistanceStrategy($this->getUser());
break;
case 'database':
$strategy = new psPageableFormDatabasePersistanceStrategy($this->getUser());
break;
default:
$strategy = new psPageableFormPostPersistanceStrategy();
break;
}
return $strategy;
}
private function process(psPageableForm $form, sfWebRequest $request)
{
$process = new psPageableFormProcess($form, $request, array($this, 'processValidForm'), array('formParameterName' => 'form'));
try
{
$process->process();
}
catch(Exception $e)
{
$this->forward404();
}
if($form->getPersistanceStrategy() instanceof psPageableFormPostPersistanceStrategy)
{
$form->persist();
$this->extraFields = $form->getPersistanceStrategy()->renderHiddenInputs();
}
}
public function processValidForm(psPageableForm $form)
{
//save and redirect
}
}
