勉強したことのメモ

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

CodeIgniter4の各種設定項目のまとめ記事

CodeIgniter4.4.4の各種設定項目を後から確認できるようまとめておきたい。追加で設定変更等を行った場合は本記事に追記していく。

 

環境設定(テスト環境 or 本番環境)

.envファイルのCI_ENVIRONMENTで設定する。

#テスト環境の場合
CI_ENVIRONMENT = development

#本番環境の場合
CI_ENVIRONMENT = production

 

サイトのURL設定

.envファイルのbaseURLで設定する。

app.baseURL = 'https://test.com/codeigniter4/'

 

MySQL設定

/app/Config/Database.phpで設定する。.envファイルでも設定できるみたいだけど複数データベースを使用する可能性も考慮しDatabase.phpで設定した。変更箇所は以下の【】内になる。

public array $default = [
    'DSN'          => '',
    'hostname'     => 'localhost',
    'username'     => '【ユーザ名】',
    'password'     => '【パスワード'】,
    'database'     => '【データベース名】',
    'DBDriver'     => 'MySQLi',
    'DBPrefix'     => '',
    'pConnect'     => false,
    'DBDebug'      => true,
    'charset'      => 'utf8',
    'DBCollat'     => 'utf8_general_ci',
    'swapPre'      => '',
    'encrypt'      => false,
    'compress'     => false,
    'strictOn'     => false,
    'failover'     => [],
    'port'         => 3306,
    'numberNative' => false,
];

 

タイムゾーン設定

/app/Config/App.phpの$appTimezoneで設定する。

#変更前
public string $appTimezone = 'UTC';

#変更後
public string $appTimezone = 'Asia/Tokyo';

 

URL最後にスラッシュがあった場合にリダイレクトされる設定変更

「https://test.com/codeigniter4/test/」というURLを開こうとすると「https://test.com/codeigniter4/public/test」のようなURLにリダイレクトされる。スラッシュの有無はそこまで気にしないけどURLに「public」という文字が入るのは微妙。なので「/public/.htaccess」の以下部分をコメントアウトした(これが正しい設定かは不明)。

# Redirect Trailing Slashes...
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} (.+)/$
#RewriteRule ^ %1 [L,R=301]

 

URLにindex.phpを付けない設定

これを設定しておかないとhelper等でURLを記述した場合に変なURLになる。具体的にはformのhelperを用いて「form_open('contact/confirm')」を記述すると「https://test.com/codeigniter4/index.php/contact/confirm」というURLが出力された。

そのため/app/Config/App.phpの$indexPageで設定する。

#変更前
public string $indexPage = 'index.php';

#変更後
public string $indexPage = '';

 

バリデートのエラーメッセージを日本語化させる設定

Validation.phpの用意

「/codeigniter4/app/Language/ja」ディレクトリを作成し、以下を記述したValidation.phpをアップロードする。

<?php

/**
 * Validation language strings.
 *
 * @package    CodeIgniter
 * @author     CodeIgniter Dev Team
 * @copyright  2019-2020 CodeIgniter Foundation
 * @license    https://opensource.org/licenses/MIT    MIT License
 * @link       https://codeigniter.com
 * @since      Version 4.0.0
 * @filesource
 *
 * @codeCoverageIgnore
 */

return [
    // Core Messages
   'noRuleSets'            => 'バリデーションに必要なルールが設定されていません。',
   'ruleNotFound'          => '{0} は有効なルールではありません。',
   'groupNotFound'         => '{0} はバリデーションルールグループではありません。',
   'groupNotArray'         => '{0} ルールグループは配列ではありません。',
   'invalidTemplate'       => '{0} は有効なバリデーションテンプレートではありません。',

    // Rule Messages
   'alpha'                 => '{field} には、アルファベットのみを入力してください。',
   'alpha_dash'            => '{field} には、半角英数字、アンダースコア、ダッシュのみを入力してください。',
   'alpha_numeric'         => '{field} には、半角英数字のみを入力してください。',
   'alpha_numeric_punct'   => '{field} には、半角英数字、半角スペース、~ ! # $ % & * - _ + = | : . のみを入力してください。',
   'alpha_numeric_space'   => '{field} には、半角英数字と半角スペースのみを入力してください。',
   'alpha_space'           => '{field} には、アルファベットと半角スペースのみを入力してください。',
   'decimal'               => '{field} には、半角で10進数を入力してください。',
   'differs'               => '{field} には、{param} と異なる値を入力してください。。',
   'equals'                => '{field} は、{param} と一致しなければなりません。',
   'exact_length'          => '{field} の長さは {param} 文字でなければなりません。',
   'greater_than'          => '{field} には、{param} より大きい半角数値を入力してください。',
   'greater_than_equal_to' => '{field} には、{param} 以上の半角数値を入力してください。',
   'hex'                   => '{field} には、16進数文字を入力してください。',
   'in_list'               => '{field} には、{param} のいずれかの値を入力してください。',
   'integer'               => '{field} には、半角整数を入力してください。',
   'is_natural'            => '{field} には、半角数字のみを入力してください。',
   'is_natural_no_zero'    => '{field} には、半角数字のみを、0より大きい値で入力してください。',
   'is_not_unique'         => '{field} には、データベース内の既存の値が含まれている必要があります。',
   'is_unique'             => '{field} には、一意の値が含まれている必要があります。',
   'less_than'             => '{field} には、{param} より小さい半角数値を入力してください。',
   'less_than_equal_to'    => '{field} には、{param} 以下の半角数値を入力してください。',
   'matches'               => '{field} は {param} と一致しません。',
   'max_length'            => '{field} は {param} 文字以内で入力してください。',
   'min_length'            => '{field} は {param} 文字以上で入力してください。',
   'not_equals'            => '{field} は {param} と一致しません。',
   'numeric'               => '{field} には、半角数字のみを入力してください。',
   'regex_match'           => '{field} の形式が正しくありません。',
   'required'              => '{field} は、必須入力です。',
   'required_with'         => '{param} が存在する場合、{field} は必須となります。',
   'required_without'      => '{param} が存在しない場合、{field} は必須となります。',
   'timezone'              => '{field} は有効なタイムゾーンではありません。',
   'valid_base64'          => '{field} には、有効なbase64文字列を入力してください。',
   'valid_email'           => '{field} は、有効なメールアドレスではありません。',
   'valid_emails'          => '{field} に、無効なメールアドレスが含まれています。',
   'valid_ip'              => '{field} には、有効なIPアドレスを入力してください。',
   'valid_url'             => '{field} には、有効なURLを入力してください。',
   'valid_date'            => '{field} には、有効な日付を入力してください。',

    // Credit Cards
   'valid_cc_num'          => '{field} は、有効なクレジットカード番号ではありません。',

    // Files
   'uploaded'              => '{field} は、有効なファイルではありません。',
   'max_size'              => '{field} は、ファイルサイズが大きすぎます。',
   'is_image'              => '{field} には、画像ファイルを指定してください。',
   'mime_in'               => '{field} は、有効なMIMEタイプではありません。',
   'ext_in'                => '{field} は、有効なファイル拡張子ではありません。',
   'max_dims'              => '{field} は画像ファイルではないか、幅が広すぎるか高すぎます。',
];

設定ファイルの変更

「application/Config/App.php」を以下の通り変更する。

#変更前
public $defaultLocale = 'en';

#変更後
public $defaultLocale = 'ja';

 - PHP CodeIgniter

  関連記事

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

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

CodeIgniter4.4.4のインストールからHello Worldページ表示まで行う方法

以前CodeIgniter3を勉強したことがあったが新バージョンの4系がリリース ...

CodeIgniter3でCronを実行する方法

CodeIgniter3系で特定の処理をCronで自動実行したかった。以下に設定 ...

CodeIgniter4&Bootstrap&jQueryで簡易版お問い合わせページの作成

CodeIgniter4.4.4&Bootstrap&jQuer ...

Codeigniter4でMySQLに接続しCRUD操作する方法

Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...