在zend中将数据从视图传递到控制器
我正在使用zend中的忘记密码模块。我想要将'memcode'用户发送到控制器,以便我可以传递查询以重置密码。在zend中将数据从视图传递到控制器
ForgotController.php
public function changepasswordAction()
{
$post = $this->request->getPost();
$dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$form = new ForgotForm($dbAdapter);
$project = new Projects();
$id=$this->params()->fromQuery('id');
$viewModel = new ViewModel(array('form' =>$form));
return $viewModel;
}
public function resetAction()
{
$pswd = $this->getRequest()->getPost('password');
$id=$this->params()->fromRoute('id',0);
echo $id;
$sql="UPDATE projects set password = '".$pswd."' where memcode = '".$id."'";
$statement = $dbAdapter->query($sql);
$result = $statement->execute();
}
视图代码:changepassword.phtml
echo $_GET['id'];
$form = $this->form;
$form->setAttribute('action', $this->url(NULL,array('controller'=>'Forgot', 'action' =>'reset','id'=>$_GET['id'])));
$form->setAttribute('method', 'post');
$form->prepare();
echo $this->form()->openTag($form);?>
<h4>Set new password</h4>
<p> Welcome! <?php //echo $this->user_email; ?> </p>
<table>
<tr>
<td><dt><?php echo $this->formLabel($form->get('password')); ?></dt>
<dd><?php
echo $this->formElement($form->get('password'));
echo $this->formElementErrors($form->get('password'));
?></dd></td></tr>
<tr>
<td><dt><?php echo $this->formLabel($form->get('confirm_password')); ?></dt>
<dd><?php
echo $this->formElement($form->get('confirm_password'));
echo $this->formElementErrors($form->get('confirm_password'));
?></dd></td></tr>
<tr>
<td><dt><?php echo $this->formElement($form->get('submit'));
echo $this->formElementErrors($form->get('submit'));
?></dd></td></tr>
</table>
</dd>
</section>
如何通过我通过“$ _GET [ '身份证']到控制器resetAction function.Now获得ID我得到O作为它的值?
不要直接使用$ _GET当使用ZF2时,您可以在您的changePasswordAction
中执行此操作:
$viewModel = new ViewModel(array('form' => $form, 'id' => $id));
,然后在changepassword.phtml
就可以直接使用这个变量作为$this->id
另外要注意您的代码:你要小心这样的SQL这可能是受到SQL注入攻击...
但是如何在resetAction()中获取此id,以便我可以触发查询来重置密码 – prachi 2014-10-08 06:29:18
您必须替换行中的$ _GET ['id']'$ form-> setAttribute('action',$ this-> url(NULL,array('controller'=>'Forgot','action'=>'reset','id'=> $ this-> id)));'然后'$ id = $ this - > params() - > fromRoute('id',0);'会正常工作... – 2014-10-08 13:05:34
仍然我将id的值作为0 – prachi 2014-10-09 10:17:42
$ _GET不是你应该在ZF2中使用过的东西。更新密码的方式非常危险,因此我建议您检查一下密码安全性。现在的情况是,你会受到SQL注入的危害。 – Sam 2014-10-08 06:20:11