CodeIgniterの勉強メモ (4) サイト内URL・Routes

URL

HTMLの中のURLが静的に書くと、Webアプリケーションが移行できなくなります。
フォームのaction、画像ファイルのパスなど、動的に生成する必要があります。
また、URLヘルパー関連関数を使うために、URLヘルパーのロードが必要です

$this->load->helper('url');
URLは情報取得用のURIと違う。
URL関連はhelperによって読み込まれた関数の集まりです。
URIは$thisオブジェクトのプロパティで、フレームワークのCI_URIクラスのオブジェクトです。
このクラスはCIフレームワークのsystem/core/uri.phpの中で定義されています。
従って、$this->uri->segment()などの関数もこのクラスのメソッドです。

base_url() サイトのベースURLの取得

サイト内のファイルとディレクトリのパスを取得するには使う。
例として、フレームワークの直下に、images/panda.jpgの画像を置く。
controllerでviewをロードする前に、上記のようにヘルパーをロードすることが必要です。
viewファイルのHTMLに下記のようなimgノードを追加する。

<img src="<?php echo base_url('images/panda.jpg'); ?>" width="300" />

ここはいつものwelcomeページで画像を表示した。
スクリーンショット 2014-09-06 15.54.18

site_url() コントローラーとアクションでURL生成

フォームのactionプロパティに使えるコントローラーとアクションのURLを生成できる。

<form action="<?php echo site('welcome/index/1/2')?>" method="post">
</form>

welcome:コントローラー名
index:アクション名(メソッド)
1と2:URI用の引数
ここで実際に生成されたアドレスは:

http://localhost:8888/ci/index.php/welcome/index/1/2

URLヘルパーの自動ロード

ファイルアップロードにも使いましたが、
/config/autoload.phpで設定しておくと、controllerで手動ロードする必要がなくなる。

$autoload['helper'] = array('url');

Routes

Routesは/config/routes.phpで設定します。
正式表現でURLと違うコントローラーとアクションに実行させる機能です。

例えば、部屋ページの
localhost/ci/room/501.html
一見静的ページですが。

welcome コントローラー
show アクション
501 URI引数
のように実行させるため

$route['room/(\d+)\.html'] = "welcome/show/$1";

設定できたら、
アクセス:http://localhost:8888/ci/room/501.html
実際実行:http://localhost:8888/ci/welcome/show/501

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>