所有都在标题中。
我得到了URL参数:
$log = $request->getParameter('logement');
Widget的陈述:
$this->widgetSchema['logement'] = new sfWidgetFormInputText();
我在表单中传递它以预先填充我的小部件'logement':
$this->form = new bailForm(array('logement' => $log));
我在symfony的doc中读过它,但是,当我这样做时,我有这个错误:
The "BailForm" form only accepts a "Bail" object.
我已经尝试过在互联网上发现的很多东西,但没有人工作。
修改
ORM是Doctrine “Logement”是“Bail”的一个属性
编辑2
我试过了:
$log = $request->getParameter('logement');
$this->form = new bailForm(null, array('logement' => $log));
我没有错误,但是我的小部件“logement”没有填充......
答案 0 :(得分:3)
两种方式之一:
<强> 1。如果您想验证Logement
$form = new BailForm(); //BailForm must have Logement validator set
$form->bind(array('logement' => $log) + $otherRequestParameters);
$form->updateObject(); //or save
<强> 2。如果您只想在对象上设置Logement
$bail = new Bail();
$bail->Logement = $log;
$form = new BailForm($bail);
答案 1 :(得分:1)
您的表单是推进或学说形式,构造函数的第一个参数必须是链接的对象实例。试试这个:
$this->form = new bailForm(null, array('logement' => $log));
答案 2 :(得分:0)
基于模型类(在本例中为BailForm
的{{1}})自动生成的表单属于Bail
类型,因此只接受对应的类型的参数模特班。
一个天真的解决方案是为类型sfFormObject
声明一个自定义构造函数,它将数组作为单个参数(或数组和Bail类型的对象)。
然而,这不是一个很好的做法,因为模型表单只能用于模型类。这个BailForm
参数 - 它对logement
对象的意义是什么?也许如果你问自己这个问题,你可以想出一个更合适的设计,可能将Bail
作为logement
的属性。
答案 3 :(得分:0)
class QuestionsForm extends BaseForm
{
private static $email;
public static function setEmail($set) { self::$email = $set; }
public static function getEmail() { return self::$email; }
public function configure()
{
$this->setDefault('email', self::$email);
//$this->setDefault('email', 'testemail');
//rest of the form setup code
}
}
这是动作类
class questionsActions extends sfActions
{
public function executeIndex(sfWebRequest $request)
{
$this->email = $this->getRequestParameter('email');
QuestionsForm::setEmail($this->email);
//die(QuestionsForm::getEmail());
$f = new QuestionsForm();
$this->form = $f;