代码之家  ›  专栏  ›  技术社区  ›  Elorfin

用URL参数预先填充表单的小部件(symfony)

  •  1
  • Elorfin  · 技术社区  · 15 年前

    都在标题里。

    我得到URL参数:

    $log = $request->getParameter('logement');
    

    小部件声明:

    $this->widgetSchema['logement'] = new sfWidgetFormInputText();
    

    我把它以表格的形式传递给我的widget‘logement’:

    $this->form = new bailForm(array('logement' => $log));
    

    我在symfony的文档中读过,但是,当我这样做时,我有一个错误:

    The "BailForm" form only accepts a "Bail" object.
    

    我已经尝试了很多在网上找到的东西,但是,没有人工作。

    编辑

    ORM是信条 “Logement”是“bell”的一个属性

    编辑2

    我试过:

    $log = $request->getParameter('logement');
    
    $this->form = new bailForm(null, array('logement' => $log));
    

    我没有错误,但我的小部件“日志”没有填写。。。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Jeremy Kauffman    15 年前

    两种方法之一:

    一。如果要验证日志

    $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);
    
        2
  •  1
  •   Maerlyn    15 年前

    您的表单是一个推进或条令表单,构造函数的第一个参数必须是一个链接的对象实例。试试这个:

    $this->form = new bailForm(null, array('logement' => $log));
    
        3
  •  0
  •   Milind Ganjoo    15 年前

    基于模型类自动生成的表单(在本例中, BailForm 对于 Bail ),属于类型 sfFormObject ,因此只接受与模型类对应的类型的参数。

    一个简单的解决方案是为类型声明一个自定义构造函数 贝壳形 它将数组作为单个参数(或数组和类型为bell的对象)。

    然而,这并不是很好的实践,因为模型表单只设计用于模型类。这个 logement 参数-对于 保释 反对?也许如果你问自己这个问题,你可以想出一个更合适的设计,可能包括 日志 作为 保释 .

        4
  •  0
  •   Flexo - Save the data dump sunny moon    14 年前
    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
      }
    
    }
    

    这里是actions类

    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;
    
    推荐文章