为什么 getPostParameters 在 symfony 1.4 上不起作用?
Why getPostParameters doesn't work on symfony 1.4?
我在 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)));
}
}
有人有想法或可以帮助我吗??因为我尝试了很多东西但没有成功。预先感谢 :)。
我认为错误隐藏在这一行中:
$values = $request->getPostParameters(['professionnal_competence']);
您正在将一个数组传递给一个接受字符串的函数。尝试删除 'professionnal_competence'
.
周围的括号
编辑:从头开始。 getPostParameters
没有参数。另一方面,getPostParameter
有两个——第一个是字段名——一个字符串。所以,你的代码应该是:
$values = $request->getPostParameter('professionnal_competence');
错误在这里:
$values = $request->getPostParameters(['professionnal_competence']);
函数sfWebRequest::getPostParameters
实际上不接受参数。
您可以使用 [...]
访问此数组,或使用 getPostParameter
,这允许 "safe" 深度访问:
$val = $request->getPostParameter('a[b]');
// basically the same as, but with error checks:
$val = $request->getPostParameters()['a']['b'];
我在 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)));
}
}
有人有想法或可以帮助我吗??因为我尝试了很多东西但没有成功。预先感谢 :)。
我认为错误隐藏在这一行中:
$values = $request->getPostParameters(['professionnal_competence']);
您正在将一个数组传递给一个接受字符串的函数。尝试删除 'professionnal_competence'
.
编辑:从头开始。 getPostParameters
没有参数。另一方面,getPostParameter
有两个——第一个是字段名——一个字符串。所以,你的代码应该是:
$values = $request->getPostParameter('professionnal_competence');
错误在这里:
$values = $request->getPostParameters(['professionnal_competence']);
函数sfWebRequest::getPostParameters
实际上不接受参数。
您可以使用 [...]
访问此数组,或使用 getPostParameter
,这允许 "safe" 深度访问:
$val = $request->getPostParameter('a[b]');
// basically the same as, but with error checks:
$val = $request->getPostParameters()['a']['b'];