Codeigniter 防止在表单验证错误时更改页面

Codeigniter 防止在表单验证错误时更改页面,codeigniter,codeigniter-3,Codeigniter,Codeigniter 3,在一个名为form\u validation.php的单独文件中,我有几个表单包含几个验证规则。其中之一是一个编辑表单,其URL/usuario/painel/editar,从会话接收用户id,出于安全原因,无需通过GET传递id,即可填充表单 问题是当我提交表单时,操作是不同的,当出现任何错误时,URL会更改为操作,在呈现表单时会显示几个错误,因为视图不同,并且没有id可接收 <form action="/auto/usuario/edit/<?php echo $id_usuar

在一个名为
form\u validation.php
的单独文件中,我有几个表单包含几个验证规则。其中之一是一个编辑表单,其URL
/usuario/painel/editar
,从会话接收用户
id
,出于安全原因,无需通过
GET
传递
id
,即可填充表单

问题是当我提交表单时,
操作
是不同的,当出现任何错误时,URL会更改为
操作
,在呈现表单时会显示几个错误,因为视图不同,并且没有
id
可接收

<form action="/auto/usuario/edit/<?php echo $id_usuario; ?>" method="POST" id="editar_formulario_fisica_1" enctype="multipart/form-data">...</form>

将id放入隐藏的表单字段中

echo form_hidden('userid',$id_usuario);
然后在控制器或模型中获取用户id

$userid = $this->input->post( 'userid') ; 
编辑======

是的,URL现在可以是相同的,因为您没有将用户id添加到URL的末尾。您不需要这样做,因为用户id是在隐藏的表单字段中传递的


表单本身位于视图文件中。要显示表单,首先需要获取用户id,然后调用/加载表单视图文件。同样,如果表单验证失败,则再次显示表单视图文件。这一切都发生在您的控制器中。此外,如果您使用codeigniter表单助手和表单验证,则显示错误消息等会更容易

谢谢你的回答,但我需要保留原来的网址。我清楚我的问题了吗?我明白,但是当我提交表单时,
操作
调用的方法与渲染视图的方法不同。我这样做是因为有两种不同类型的用户,我想避免重复任何代码,但现在它导致我这个问题。是的,很难诊断没有看到所有的代码。一般来说,先让事情运转起来,然后重构。但是我还是要鼓励你不要在URL中传递ID。我有一个重定向页面的方法,在验证失败的情况下我会使用这个方法。遗憾的是,URL与
edit
方法的路径保持不变,但奇怪的是,即使我更改了
id
,信息也保持不变。如果表单验证失败,请不要重定向。只需调用一个方法来再次显示表单。您仍将处于同一会话中,您将能够使用codeigniter表单验证轻松显示表单验证错误消息、它们在表单中输入的值等。