smarty 外部ファイル参照

smarty 外部ファイル参照


今日はsmartyを使ってwebサイトを作る際の注意点です
自分の失敗を元に記事にしました。

smartyを使ってwebサイトを作る時にtemplatesファイルから画像をそのまま読み込むと
errorになってしまったり、上手く表示できないことがあります。
初心者の方だと同じ状態になった人もいるかと思います。


そこで調べてみて解りました。

外部ファイルを呼び出す際の注意


外部ファイルを呼び出す時は、indexがあるページから参照することになります。






例えば上の例の場合、画像ファイルなどを読み込む場合は、index.phpがある位置からの
参照になります。


<img src="img/画像パス">

こういった参照になるということです。


temlatesファイルの中から見た参照ではないということに注意してください。

session()について

session()関数について

session()関数は、ログインが必要なサイトなどで異なるページに移ったとしても
再度ログイン情報を入力しなくても指定したデータを引き続き保持することができる機能です。


【さらに詳しく】
PHPのsession_start関数は、ブラウザから送られてくるクッキーの値をもとに、どのブラウザかを特定し、そのブラウザ専用のセッション変数を復元させます。

ということみたいです。

私より詳しく使いかたなど詳細を載せている方のHPを紹介します。

10日で覚えるPHPキソ

Fatal error: Smarty error:

Fatal error: Smarty error:

このエラーもよく悩まされたerrorの一つです。
Fatal error: Smarty error: unable to write to $compile_dir

【意味】

$compile_dir に不正な値が入っており、そのようなディレクトリが存在しないか、もしくは templates_c の指定がディレクトリではなくファイル

という意味のようです。
全て上手く設定してるつもりでも属性設定が上手くできてないことが初心者の私にはよくありました。

function __construct()

function __construct()
[オブジェクトの生成時に自動的にコールされる特殊なメンバ関数]


クラスオブジェクトを作成した際に一番初めに呼びだされます。
認証画面などをmysqlを使って作成する際などに使用したりします。

個人でもfunction_constructを使って作成してみました。

クラスオブジェクトを作成する際には、最後に終了の記述

function __desctruct()
を忘れないようにしましょう。

function __desctruct()
とは、
オブジェクトが消滅する時に呼び出されるものです。
具体的に説明すると、どの変数にも参照されなくなったときに呼び出されます。

smaty syntax error シンタックスエラー

smaty syntax error シンタックスエラー

smartyを使っていて、syntax errorという表示がされるようになってしまいました。
調べてみた結果ですが、{ldelim}{rdelim}という組み込み関数を使うと回避できるようです。

−−−−−−−−−−−−−−−−−−

以下をテンプレートから出力するとエラーがでる場合

{test}

Fatal error: Smarty error 省略 syntax error 省略


【対処法】

{ldelim}test{rdelim}

−−−−−−−−−−−−−−−−−−

置き換えで入力することで正しく表示されるようになります。

includeとrequireの使い分け

includeとrequireの使い分け

includerequireはエラー表示以外は基本同じになるようです。


−−−−−−−−−−−−−−−−−−

【使い分け】
include()
エラー時にwarning(警告)を出力

require()
Fatal Errorスクリプトを終了します

−−−−−−−−−−−−−−−−−−

str_replace()関数

str_replace()関数

引数に含まれる文字列を、指定した文字列に置き換えます。

$title = "今日は晴です";
$chikan = "晴";
$kekka = "雨";
$kotae = str_replace($title,$chikan,$kekka);

print($kotae);

−−−−−−−−−−−−−−−−−−


☆実行結果☆
今日は雨です

−−−−−−−−−−−−−−−−−−