PHP CodeIgniter 4 - 表单提交 - 错误“找不到'注册/索引'的路线”

我在视图中使用 form_open() 辅助方法来指示控制器方法来处理表单提交操作并在 appConfigRoutes.php 中定义路由。

我仍然收到错误 Can't find a route for 'registrations/index'

请协助解决问题。下面提供了代码片段。

#### 错误:

enter image description here

register.php 查看文件:

            <?php echo form_open('/registrations/index'); ?>

Registrations.php 控制器:

class Registrations extends BaseController {

    public function index() {

        $data['coursename'] = $this->getCourseName();  

        log_message('info','name field >' . $this->request->getVar('iname') . '<<');

        echo view('templates/header');
        echo view('pages/register', $data);
        echo view('templates/footer');
    }

路由.php

$routes->get('/registrations/index', 'Registrations::index');
stack overflow PHP CodeIgniter 4 - Form Submission - error "Can't find a route for 'registrations/index'"
原文答案

答案:

作者头像
form_open('/registrations/index')

#### 解释:

上面的代码行将创建一个指向您的站点 URL 以及“/registrations/index” URI 段的表单,如下所示:

<form action="http://your-site-domain.com/index.php/registrations/index" method="post" accept-charset="utf-8">

如果您仔细查看上面自动生成的开始 form 标记,这实际上会发出 POST HTTP 请求。然而,您使用 appConfigRoutes.php 方法在 ->get(...) 文件中定义了您的路线。

#### 解决方案:

而不是 ( Routes.php ):❌

$routes->get('/registrations/index', 'Registrations::index');

使用这个:✅

$routes->post('/registrations/index', 'Registrations::index');

Notice the use of ->post(...) .

资源: Form Helper

作者头像

我认为您的 AutoRoutes 默认设置为 false 。

在您的 Routes.php 中添加这一行

$routes->setAutoRoute(true);