勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

CodeIgniter4でGET / POSTパラメータの受け取りとルーティング設定方法

  PHP CodeIgniter

CodeIgniter4.4.4でページを開いた際にGET / POSTパラメータを受け取りたい。また、それとは別に「https://test.com/product/detail/123/」のようなURLの場合に「123」部分をGETパラメータとして取得したい(ルーティング設定)。以下に対応方法をメモ。

 

リファレンス

GET / POSTパラメータの受け取り

https://ci-trans-jp.gitlab.io/user_guide_4_jp/incoming/incomingrequest.html#retrieving-input

ルーティング設定

https://ci-trans-jp.gitlab.io/user_guide_4_jp/general/routing.html

 

各種ソースコード

Routes.php

$routes->add('/product', 'Product::index');
$routes->add('/product/detail/(:num)', 'Product::detail/$1');

Controllers

<?php
namespace App\Controllers;

class Product extends BaseController
{
    public function index()
    {
        //パラメータ受け取り
        var_dump($this->request->getPost('param'));
        var_dump($this->request->getGet('param'));

        $data = [
            'page_title' => 'product',
        ];

        echo view('template/header');
        echo view('product', $data);
        echo view('template/footer');
    }


    public function detail(...$params)
    {
        //パラメータ受け取り
        var_dump($params);
        $data = [
            'page_title' => 'product_detail',
        ];

        echo view('template/header');
        echo view('product_detail', $data);
        echo view('template/footer');
    }
}

 

所感

ルーティング設定の方は受け取りが以下のような形となり、キーは指定できないのがちょっと微妙。

array(1) {
  [0]=>
  string(3) "123"
}

「https://test.com/product/detail/【カテゴリー名】/【商品ID】/」みたいな多重階層の場合にキーが指定できないと怖いような気がする。

 - PHP CodeIgniter

  関連記事

CodeIgniter4でコントローラ実行の前後に指定したイベントを実行する方法

CodeIgniter4で特定の条件の場合は指定したページにリダイレクトさせたい ...

CodeIgniter4で祝日一覧APIにCURLでリクエストし結果をファイルキャッシュする方法

Codeigniter4.4.4で祝日一覧APIにCURLでリクエストしたい。尚 ...

CodeIgniter4でのメール送信方法(テキスト・HTMLメール)

CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...

CodeIgniter4 & jQueryを用いて同一サイト内でajax通信する方法

CodeIgniter4.4.4 & jQueryを用いて同一サイト内で ...

CodeIgniter4でフォームからファイルをアップロードし保存する方法

CodeIgniter4.4.4でformから画像等のファイルをアップロードし、 ...