【问题标题】:Why getPostParameters doesn't work on symfony 1.4?为什么 getPostParameters 在 symfony 1.4 上不起作用?
【发布时间】:2018-02-08 16:10:33
【问题描述】:

我在 symfony 1.4 中有一个为每个权限创建的表单。我的表格是成功创建的。但是当我尝试保存我的表格时,我不能。我去查看我的操作代码,函数 getPostParameters 似乎不起作用。我使用 getParameterHolder 来查看我的参数有什么问题,但是在我设置好值之后 getPostParameters 函数不起作用。

这是我从 getParameterHolder 得到的:

   sfParameterHolder Object
([parameters:protected] => Array
        (
            [professionnal_competence] => Array
                (
                    [rayon_competence3] => 24
                    [rayon_competence9] => 22
                    [rayon_competence19] => 32
                )

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

)

还有我的功能:

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');
    }

这是我的表格:

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)));

  }
}

有人有想法或可以帮助我吗?因为我尝试了很多事情但没有成功。预先感谢 :)。

【问题讨论】:

  • 你能把你的表格给我们看看吗?
  • 是的,我编辑了我的消息 :)

标签: php symfony-1.4


【解决方案1】:

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

$values = $request->getPostParameters(['professionnal_competence']);

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

编辑:从头开始。 getPostParameters 不带任何参数。另一方面,getPostParameter 需要两个 - 第一个是字段名称 - 一个字符串。所以,你的代码应该是:

$values = $request->getPostParameter('professionnal_competence');

【讨论】:

  • 谢谢!!!我试试你的提示:$values = $request->getPostParameter('professionnal_competence'); 但它不起作用,但也许我错了。
  • 您确定要通过 POST 发送表单吗?试试var_dumping $request->getMethod()$request->getGetParameters()$request->getPostParameters()
  • 天哪!是的,方法是 GET!我成功获取了我的参数并保存在数据库中!比你好多了!
【解决方案2】:

错误在这里:

$values = $request->getPostParameters(['professionnal_competence']);

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

您可以使用[...] 访问此数组,也可以使用getPostParameter,它允许“安全”深度访问:

$val = $request->getPostParameter('a[b]');
// basically the same as, but with error checks:
$val = $request->getPostParameters()['a']['b'];

【讨论】:

  • 你能试试$values = $request->getPostParameter('professionnal_competence[rayon_competence3]');吗?
  • 我尝试了,但 var_dump 没有给我“null”。看:<pre class='xdebug-var-dump' dir='ltr'> <small>/var/www/html/plugins/ppPart2ProSubregionPlugin/modules/professionnal_subregion/lib/Baseprofessionnal_subregionActions.class.php:56:</small><font color='#3465a4'>null</font> </pre>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 2012-03-09
  • 2013-04-15
  • 1970-01-01
  • 2013-03-16
  • 2020-09-04
相关资源
最近更新 更多