【问题标题】:Codeigniter 4 error 404 after form post submit there is problem with route表单提交后Codeigniter 4错误404路由有问题
【发布时间】:2020-09-21 06:56:02
【问题描述】:

我使用 Codeigniter 4

我已经添加了Routes.php

$routes->get('/register', 'Auth::register');

这是Auth.php

    public function register()
    {
        $data['page_title']   = "Register";
        if ($this->request->getMethod() === 'post') {
            $email = $this->request->getPost('email');
            if ($this->validate([
                'email' => 'required',
                'pwd'  => 'required',
                'repwd' => 'required|matches[pwd]'
            ])) {
                $pwd = $this->request->getPost('pwd');
                $repwd = $this->request->getPost('repwd');
                $ip = $this->request->getIPAddress();
                return redirect()->to('/');
            }
            $data['email'] = $email;
            $this->session->setFlashdata('isFormError', true);
        }

        return view('auth/register', $data);
    }

for view 只是带有 post 方法的简单 html 表单。表单提交后,我收到错误:

404 - File Not Found
Controller or its method is not found: \App\Controllers\Register::index

我使用http://localhost:8080/register 并且还重定向到http://localhost:8080/register 但它加载\App\Controllers\Register::index 而不是\App\Controllers\Auth::register

如何解决这个问题?可能是我错过了什么还是这是 CI4 错误?

【问题讨论】:

  • 尝试从/register 中删除“/”,看看是否可行
  • @mPareek 还是一样

标签: php codeigniter-4


【解决方案1】:

您需要在路线中指定方法。由于您使用的是 POST,它应该是:

$routes->post('/register', 'Auth::register');

你也可以使用多种方法:

$routes->match(['get', 'post'], '/register', 'Auth::register');

或者没有方法:

$routes->add('/register', 'Auth::register');

【讨论】:

  • 我注意到有时使用 get 方法路由 post 方法表单有时会起作用。有什么解释吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2015-06-01
相关资源
最近更新 更多