首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么getPostParameters不能在symfony 1.4上工作?

为什么getPostParameters不能在symfony 1.4上工作?
EN

Stack Overflow用户
提问于 2018-02-09 00:10:33
回答 2查看 152关注 0票数 2

我在symfony 1.4中有一个表格,它是为每个能力创建的。成功创建了我的表单。但是当我尝试保存我的表单时,我无法保存。我去查看我的动作代码,而函数getPostParameters似乎不起作用。我使用getParameterHolder来查看参数中的错误,但是在我设置了正确的值之后,getPostParameters函数就不起作用了。

这是我从getParameterHolder得到的:

代码语言:javascript
复制
   sfParameterHolder Object
([parameters:protected] => Array
        (
            [professionnal_competence] => Array
                (
                    [rayon_competence3] => 24
                    [rayon_competence9] => 22
                    [rayon_competence19] => 32
                )

            [module] => professionnal_subregion
            [action] => saveCompetenceRadius
        )

)

我的函数是:

代码语言:javascript
复制
public function executeSaveCompetenceRadius(sfWebRequest $request) {
        $user = $this->getUser()->getGuardUser();

        $q = ProfessionnalCompetenceQuery::create()
            ->addSelect('pc.*')
            ->where('pc.professionnal_id= ?',  $user->getId());
        $res = $q->execute();

        $values = $request->getPostParameters(['professionnal_competence']);
        $test = $request->getParameterHolder();
        var_dump($values); print_r($values); print_r($request->getParameterHolder());
        exit;

        foreach ($res as $professionnalCompetence) {
            foreach ($values['professionnal_competence'] as $k => $val) {
                if ($k == 'rayon_competence' . $professionnalCompetence->getCompetenceId()) {
                    $professionnalCompetence->setRayonCompetence($val);
                    $professionnalCompetence->save();
                }
            }
        }
        return $this->renderComponent('professionnal_subregion', 'competenceRadius');
       // return "test";
        //return $this->renderPartial('professionnal_subregion/competenceradius');
    }

这是我的表格:

代码语言:javascript
复制
class ProfessionnalCompetenceRadiusForm extends BaseProfessionnalCompetenceForm {


  public function configure()
  {
     unset($this['rayon_competence']);

      $this->widgetSchema['rayon_competence'.$this->object->getCompetenceId()] = new sfWidgetFormSelectUISlider(array('max'=>50,'step'=>1));
      $this->widgetSchema->setHelp('rayon_competence'.$this->object->getCompetenceId(),'en kilomètres');
      $this->widgetSchema->setLabel('rayon_competence'.$this->object->getCompetenceId(),'rayon');
      $this->setValidator('rayon_competence'.$this->object->getCompetenceId(), new sfValidatorInteger(array('max'=>50)));

  }
}

有人有主意或者能帮我吗??因为我尝试了很多东西,但都没有成功。提前感谢:)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-09 00:24:12

我认为错误隐藏在这一行中:

代码语言:javascript
复制
$values = $request->getPostParameters(['professionnal_competence']);

您正在将一个数组传递给一个接受字符串的函数。试着去掉'professionnal_competence'周围的括号。

编辑:去掉它。getPostParameters不带任何参数。另一方面,getPostParameter接受两个字符串-第一个是字段名。所以,你的代码应该是:

代码语言:javascript
复制
$values = $request->getPostParameter('professionnal_competence');
票数 3
EN

Stack Overflow用户

发布于 2018-02-09 00:29:13

错误在这里:

代码语言:javascript
复制
$values = $request->getPostParameters(['professionnal_competence']);

函数sfWebRequest::getPostParameters实际上并不接受参数。

您可以使用[...]getPostParameter访问此阵列,后者允许“安全”的深度访问:

代码语言:javascript
复制
$val = $request->getPostParameter('a[b]');
// basically the same as, but with error checks:
$val = $request->getPostParameters()['a']['b'];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48689919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档