【问题标题】:CodeIgniter4 - Redirect with dataCodeIgniter4 - 使用数据重定向
【发布时间】:2020-11-16 18:01:12
【问题描述】:

我尝试在控制器中执行此重定向:

$this->getSession()->setFlashdata("error_controller", "Incorrect email or password");
return redirect()->route("login");

这是在视图中:

<?php
    if($error_controller){
        echo "<div>" . $error_controller . "</div>";
    }else{
        echo "no-no";
    }
?>

在浏览器中打印no-no,这意味着来自flashdataerror_controller 不会到达查看。

如何用数据重定向到login路由?

【问题讨论】:

  • 尝试$_SESSION['error_controller'] 而不是$error_controller。 Flashdata 附加到会话中,而不是传递到视图中,就像您的控制器调用 view 一样,使用它的第二个可选参数来传递要映射到变量的数据(即 $error_controller)。但是,如果这不是问题,我确实有另一个想法。
  • 试试这个session()-&gt;get('error_controller');

标签: php codeigniter codeigniter-4


【解决方案1】:

在控制器中添加此代码

session()->setFlashData("error_controller","Incorrect email or password");

return redirect()->to(base_url('/login'));

在视图文件中添加这段代码

 <?php

if(session()->has('error_controller'))
  echo "<div>" . session()->getFlashdata('error_controller') . "</div>";
    }else{
        echo "no-no";
    }
?>

【讨论】:

    【解决方案2】:

    我试过这种方法,它奏效了:
    在控制器中:

    $validate = $this->validate([
       'firstname' => 'required',
       'lastname'  => 'required',
       'email'     => 'required|valid_email|is_unique[users.email]',
    ]);
    

    然后我将错误作为数组传递给视图(在控制器中)

    $data['validation'] = $this->validator;
    return view( 'view_file', $data );
    

    然后在查看文件中:

    <?= form_open(....) ?>
      <input type="text" name="firstname" class="form-control" placeholder="Firstname">
      <?= ( isset($validation) && $validation->hasError('firstname')) ? $validation->getError('firstname'): ''; ?>
    <?= form_close() ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2011-09-30
      • 2022-12-17
      • 1970-01-01
      • 2012-03-15
      • 2013-10-06
      相关资源
      最近更新 更多