Php 使用旧输入返回页面进行验证

Php 使用旧输入返回页面进行验证,php,validation,laravel,laravel-4,laravel-validation,Php,Validation,Laravel,Laravel 4,Laravel Validation,用于更新配置文件页面 我把这条路线当作 Route::get('editdriver/{data}', 'DriverController@EditDriver'); 在我使用的验证后的控制器中 return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages()); 因此,url将是 如果我清空规则中所需的值,然后按提交表单 它显示带有验证消息的旧数据 我需要的

用于更新配置文件页面

我把这条路线当作

Route::get('editdriver/{data}', 'DriverController@EditDriver');
在我使用的验证后的控制器中

return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages());
因此,url将是

如果我清空
规则中所需的值
,然后按提交表单

它显示带有验证消息的旧数据

我需要的是,它不应该显示来自db的旧值。

我甚至试过

return Redirect::back()->withErrors($validation->messages());
我该怎么做

更新: 在控制器中,我有

public function EditDriver($data=NULL)
    {
        $editvehicle=$data;
        $DriverDetails = DriverModel::where('DriverId', $editvehicle)->get()->toArray();

        return View::make('home/editdriver')->with('DriverDetails', $DriverDetails);
    }
在我看来

$("#Firstname").val("<?php echo $DriverDetails[0]['Firstname']?>");

我不知道为什么要使用jQuery来填写表单——这毫无意义,应该删除该代码

您只需要这一行代码:

{{ Form::text('Firstname', Input::old('Firstname', $DriverDetails[0]['Firstname']), array('id'=> 'Firstname')) }}
使用
Input::old($DriverDetails[0]['Firstname'])
将使用您的数据库值预先填充初始表单,但如果出现验证错误,则将使用任何“输入的”值填充表单

为了确认,您的原始退货声明看起来是正确的:

return Redirect::to('editdriver/'.$data)->withInput()->withErrors($validation->messages());

我想您应该使用Laravel的Form::model方法。 这允许您以一种简单的方式使用数据库中的数据填充表单,并允许您输入旧表单数据

{{ Form::model($User, array('url' => 'management/edit/' . $User->id, 'role' => 'form')) }}
    <div class="form-group">
        <label>Username</label>
        {{ Form::text('username', Input::old('username'), array('class' => 'form-control', 'placeholder' => 'Username', 'name' => 'username')) }}
    </div>
    <div class="form-group">
        <label>Password</label>
        {{ Form::password('password', array('class' => 'form-control', 'placeholder' => 'Password', 'name' => 'password')) }}
    </div>
    {{ Form::submit('Edit', array('class' => 'btn btn-default')) }}
{{ Form::close() }}
这将传回您要编辑的用户的信息。 并且Form::model将自动将其与Form::text的名称匹配。 我认为数据库字段应该与表单::text的名称匹配

然后,当您将编辑内容发布到服务器时,您可以执行以下操作:

public function showEdit($ID)
{
    //Return View With User Information
    return View::make('management.edit')
        ->with('User', Management::find($ID));
}
public function postEdit($ID)
{
    // Get Input
    $PostData = array(
        'username'  => Input::get('username'),
        'password'  => Input::get('password')
    );

    // Declare Validation Rules.
    $ValRules = array(
        'username'  => 'required|unique:management,username,' . $ID,
        'password'  => 'required'
    );

    // Declare Validation Messages
    $ValMessages = array(
        'username.required'     => 'The field Username is required.</br>',
        'username.unique'       => 'The field Username must be unique.</br>',
        'password.required'     => 'The field Password is required.</br>'
    );

    // Validate Input
    $ValResult = Validator::make($PostData, $ValRules, $ValMessages);

    // Check Validate
    if ($ValResult->passes())
    {
        // Update User
        $UserUpdate = Management::find($ID);
        $UserUpdate->username = Input::get('username');
        $UserUpdate->password = Input::get('password');
        $UserUpdate->save();

        // Succes, Redirect To User
        return Redirect::to('management')
            ->with('Success', 'The management users is modified.');
    }
    else
    {
        // Grab Messages From Validator
        $ValErrors = $ValResult->messages();

        // Error, Redirect To User Edit
        return Redirect::to('management/edit/' . $ID)
            ->withErrors($ValErrors)
            ->withInput(Input::except('password'));
    }
}
公共函数后期编辑($ID)
{
//获取输入
$PostData=数组(
'username'=>Input::get('username'),
'password'=>Input::get('password')
);
//声明验证规则。
$ValRules=array(
“用户名”=>“必需|唯一:管理,用户名”。$ID,
'密码'=>'必需'
);
//声明验证消息
$ValMessages=array(
'username.required'=>'字段用户名是必需的。
', “username.unique”=>“字段用户名必须是唯一的。
”, 'password.required'=>'字段密码是必需的。
' ); //验证输入 $ValResult=Validator::make($PostData、$ValRules、$ValMessages); //检查验证 如果($ValResult->passes()) { //更新用户 $UserUpdate=Management::find($ID); $UserUpdate->username=Input::get('username'); $UserUpdate->password=Input::get('password'); $UserUpdate->save(); //成功,重定向到用户 返回重定向::到('管理') ->使用('Success','修改管理用户'); } 其他的 { //从验证器抓取消息 $valerors=$ValResult->messages(); //错误,重定向到用户编辑 返回重定向::到('management/edit/'。$ID) ->威瑟罗(瓦莱罗) ->withInput(输入::除('password')); } }
请参阅->withInput以返回用户输入的信息。 然后,Form::model将查看会话闪存数据,并将旧输入放在正确的位置。 请注意,会话闪存数据将优先于模型值($User)

Laravel表单模型绑定:


希望这有帮助

只有使用旧的输入,而不是数据库中的数据,您需要发布表单代码我已经更新了查询,,,是的,我将删除jquery,我应该使用
return Redirect::back()->withErrors($validation->messages())或使用
返回视图::make('home/editdriver')->使用('DriverDetails',$DriverDetails)?您的问题中包含的原始
返回
including
->withInput()
是正确的。我已经更新了表单代码,表单提交后它仍然显示来自db的值:(抱歉-我的代码中有错误-尝试新更新的代码(您仍然必须删除jQuery代码,否则它将覆盖答案)重定向::back()->withInput()->WithRors($validation->messages())如何;这样您就不需要在视图中手动填写任何内容,因为laravel将为您处理这些内容。
public function postEdit($ID)
{
    // Get Input
    $PostData = array(
        'username'  => Input::get('username'),
        'password'  => Input::get('password')
    );

    // Declare Validation Rules.
    $ValRules = array(
        'username'  => 'required|unique:management,username,' . $ID,
        'password'  => 'required'
    );

    // Declare Validation Messages
    $ValMessages = array(
        'username.required'     => 'The field Username is required.</br>',
        'username.unique'       => 'The field Username must be unique.</br>',
        'password.required'     => 'The field Password is required.</br>'
    );

    // Validate Input
    $ValResult = Validator::make($PostData, $ValRules, $ValMessages);

    // Check Validate
    if ($ValResult->passes())
    {
        // Update User
        $UserUpdate = Management::find($ID);
        $UserUpdate->username = Input::get('username');
        $UserUpdate->password = Input::get('password');
        $UserUpdate->save();

        // Succes, Redirect To User
        return Redirect::to('management')
            ->with('Success', 'The management users is modified.');
    }
    else
    {
        // Grab Messages From Validator
        $ValErrors = $ValResult->messages();

        // Error, Redirect To User Edit
        return Redirect::to('management/edit/' . $ID)
            ->withErrors($ValErrors)
            ->withInput(Input::except('password'));
    }
}