CI4: form POST to same page, request method remains GET

I’m using CodeIgniter 4 and hope someone here can help me.

I’m trying to post a form to the current page and process it there. To this end I addes a matched route to Routes.php:

$routes->match(['get', 'post'], 'klanten/(:segment)', 'Klanten::bewerk/$1'); 

I do not have a route set up that overwrites this route. Here is the full routes list:

$routes->match(['get', 'post'], 'soorten/(:segment)', 'Soorten::index/$1');
$routes->match(['get', 'post'], 'deurbel/(:segment)/(:segment)', 'Deurbel::index/$1/$2');
$routes->get('klanten', 'Klanten::index');
$routes->post('klanten/toevoegen', 'Klanten::toevoegen');
$routes->match(['get', 'post'], 'klanten/(:segment)', 'Klanten::bewerk/$1');
$routes->get('/', 'Dashboard::index'); 

When I post the form somehow the request method keeps coming back as get instead of post… Here is my form HTML:

<form action="/klanten/<?= esc($klant['slug']) ?>/" method="post">
                <div class="row">
                    <div class="col-12">
                        <div class="form-group">
                            <label for="naam">Naam: </label>
                            <input type="text" class="form-control" name="naam" id="naam" value="<?= $klant['naam'] ?>">
                        </div>
                        <div class="form-group">
                            <label for="woonplaats">Woonplaats: </label>
                            <input type="text" class="form-control" name="woonplaats" id="woonplaats" value="<?= $klant['woonplaats'] ?>">
                        </div>
                    </div>
                </div>
                 <?php if(isset($validation)): ?>
                     <div class="row">
                        <div class="alert alert-danger" role="alert">
                            <?= $validation->listErrors() ?>
                        </div>
                     </div>
                    <?php endif;?>
                    <div class="row">
                        <div class="row">
                            <div class="col-12 col-sm-4">
                                <button type="submit" class="btn btn-success">Opslaan</button>
                            </div>
                        </div>
                    </div>
            </form>

As you can see, I do have the forms method as post.
The debug bar does show the route is there:

By now I’m ready to smash my head against the wall, because I can’t figure out what is going on here. I’m hopinh you guys can help me and prevent me from doing that

Not familiar with CodeIgniter really, but, one thing might be caching. Are you testing this on one machine?
If so, you might want to dump your browser cache. I have seen where that has messed up results.
Also, you might want to change your match([]) sections to have the POST first. I read somewhere that some calls might default to the first one. Might help.

Thanks for your reply. Turned out I needed to remove the trailing slash from the url. That solved the problem.

Oh my! That is odd. Glad you solved it!

Sponsor our Newsletter | Privacy Policy | Terms of Service