1

ここでは、フォーム検証とビュー ファイルを備えた codeigniter4 コントローラーが定義されています。エラーのあるビューページにどのように反映できますか。ビューページにコントローラーコードが反映されない。誰でも codeigniter4 検証の問題を明確にすることができますか?

コントローラ

public function register_user(){
    helper(['form', 'url']);
    $this->validation =  \Config\Services::validation();
    $validation = $this->validation;
    $rules = [
      'user_name' => [
          'required' => 'All accounts must have usernames provided',
      ],
    ];

    $this->validation->setRules([
            'user_name' => 'required|min_length[2]',
        ],
        $rules
    );

    if (! $this->validate($rules))
    {
      $validationErrors = $this->validation->getErrors();
      return redirect()->back()->withInput()->with('errors', $validationErrors);
    }
}

意見

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Login Registration</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" media="screen" title="no title">
  </head>
<body>
 <style type="text/css">
     .error{color: red;}
</style>
<span style="background-color:red;">
  <div class="container">
      <div class="row">
          <div class="col-md-4 col-md-offset-4">
              <div class="login-panel panel panel-success">
                  <div class="panel-heading">
                      <h3 class="panel-title">Please do Registration here</h3>
                  </div>
                  <div class="panel-body">
                      <form role="form" method="post" action="<?php echo base_url('user/register_user'); ?>">
                          <fieldset>
                              <div class="form-group">
                                  <input class="form-control" placeholder="Please enter Name" name="user_name" type="text" autofocus>
                                  <span class="error"><?php echo $validation->getError('user_name'); ?></span>
                              </div>

                              <input class="btn btn-lg btn-success btn-block" type="submit" value="Register" name="register" >

                          </fieldset>
                      </form>
                      <center><b>You have Already registered ?</b> <br></b><a href="<?php echo base_url('user/login_view'); ?>"> Please Login</a></center>
                  </div>
              </div>
          </div>
      </div>
  </div>
</span>
</body>
</html>

現在の結果は次のとおりです。 現在の結果

4

3 に答える 3

0

old()//関数で使用できるように、リダイレクト時に古い入力値を保持します

return redirect()->back()->withInput();

// フラッシュメッセージを設定

return redirect()->back()->with('foo', 'message');

ビューでアクセスしようとしている変数 $validation にデータが割り当てられていないため、データが含まれていないため、例では両方を組み合わせましたが、機能しません

だから交換すればいい

if (! $this->validate($rules))
{
  $validationErrors = $this->validation->getErrors();
  return redirect()->back()->withInput()->with('errors', $validationErrors);
}

このコードで:

 if (! $this->validate($rules))
    {
      $data['validation'] = $this->validatior;
      return view('view-name',$data);    //note don't forget to replace view-name. 
    }

ビューファイルは何も変更しないでください。

于 2020-11-11T07:43:30.123 に答える