• 締切済み

Smartyのテンプレートで未定義の変数がエラーになってしまいます。

Smartyでテンプレートで、存在しない変数が書かれていてもUndefined indexのエラーを表示しないように したいのですが、Smartyの設定で可能でしょうか?

みんなの回答

回答No.1

設定は知らんけど、 default修正子が使えるのでは。

参考URL:
http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/language.modifier.default.html
natsuyori
質問者

お礼

設定ではないんですね。 しかしながらSmartyは修飾子がすごく便利なんですね。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Smartyの変数について

    Smartyでテンプレートに変数を表示させる場合、assign以外で変数を記述する方法はありますか? 以前EC-CUBEの改造をしていた時は$this->index=34567;などと値を入力したものをテンプレートで$indexとすれば34567が表示されていたのですが・・・。 何か設定が必要なのでしょうか?

    • ベストアンサー
    • PHP
  • Smartyのエラーが2つずつ出ます

    PHP5+Smartyでサイトを作っています。 「$smarty->display("hoge.tpl");」としてテンプレートファイルを呼び出します。 そのテンプレートファイル「hoge.tpl」が存在しない時に、以下のエラー文が必ず2つ表示されます。 Warning: Smarty error: unable to read resource: "hoge.tpl" in /root/.../smarty/Smarty.class.php on line 1092 一度しか呼び出していないのにエラーが2つ表示されるので、コードの記述ミスかと考えたのですがわかりませんでした。 テンプレートファイルがある場合は、テンプレートが二度呼び出されることはありません。 エラー文にある1092行目からコードを追って見たのですがわかりませんでした。 どうすればエラー表示を1つにできるのでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • ロリポップでSmartyのtpl読み込みエラー

    下記のコードを実行すると、  Smarty error: unable to read resource: "template1.tpl"  というエラーが出てしまいます。 $smarty->template_dirで指定したディレクトリ名の中に  "template1.tpl"というファイルは配置してあります。  原因などわかればおしえていただけないでしょうか。 index.php <?php require_once("Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir = './cache/'; $smarty->display("template1.tpl"); ?> 【サーバ】  ロリポップです。 【その他】 index.phpをホームディレクトリ配下におくとエラーは消えます。 【ディレクトリ構成】 modules/index.php と templates/template1.tpl をがあり、 index.php から template1.tpl を読み込もうとしています。  ・modules →index.php ・templates →template1.tpl

    • ベストアンサー
    • PHP
  • Smartyでテンプレートが読み込めない

    下記のソースを実行すると、テンプレートが読み込めずエラーになってしまいます。 うーん、何故なのか分からず困っております。 phpのバージョンは4.4.6なのですが、Ver5以降でないとサポートされないのでしょうか。 [source] <?php require_once("Smarty.class.php"); class MySmarty extends Smarty { function _MySmarty() { $this->Smarty(); $this->template_dir="../templates"; $this->compile_dir="../templates_c"; } } $o_smarty=new MySmarty(); $o_smarty->display("hello.tpl"); ?> [error message] Warning: Smarty error: unable to read resource: "hello.tpl"

    • ベストアンサー
    • PHP
  • smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し

    smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し、それぞれのそのなかの変数をひとつのテンプレートに表示するという方法は可能でしょうか?つまりそれぞれを同じテンプレートに表示する、という方法はできるのでしょうか?PHPは下記のようになります。 $smarty = new Smarty(); $smarty2 = new Smarty(); $smarty->assign('abc', $def); $smarty2->assign('ghi', $jkl); $smarty->display('aaa.tpl'); $smarty2->display('aaa.tpl'); それとも、オブジェクトと表示するテンプレートは1つずつでないといけないとだめで、$smartyと$smarty2は、どっちかひとつに統一する必要があるのでしょうか?

    • ベストアンサー
    • PHP
  • Smarty の Undefined Index

    CentOS5.5 のサーバ上にて、Apache + PHP + Smarty + Zend Framework で 構築されたサイトを、事情により異なるサーバへ引っ越すことになりました。 新しいサーバにも CentOS5.5 がインストールされたものを用意し、 Apache と PHP は旧サーバと同じバージョンのものをインストールし、 Smarty と Zend Framework は旧サーバから tar ball でまとめて コピーし展開しました。 その他ソースコードも tar ball でまとめて持ってきましたので、差異はないと 思っていたのですが、新しいサーバのページを表示させると、あちこちに 下記のようなエラーメッセージが表示されてしまいました。 [8] Undefined index: checked /file_path_to_smarty/templates_c/%%A6^A6C^A6C4B1AA%%index.tpl.php(143) PHPで書かれたプログラムの内容については、開発に携わっていなかったので 詳しいことは分からないのですが、ソースコードを見ると、確かに変数が 初期化されないまま来ているので Undefined Index が表示されるのは 当然という感じです。 error_reporting や display_errors の設定の問題かと思いましたが、 設定やソースコードを変えてもエラーが表示されてしまいました。 Smarty には default という修飾子がありますが、もともとのソースコードでは 書かれていないので旧サーバでは default 無しでもメッセージが表示されない ようです。 旧サーバでは、変数が初期化されていなくてもメッセージが表示されずに 処理される設定になっているのではないかと思うのですが、どこをどう変えれば 良いのかわからない状態です。 あと数週間は旧サーバも稼働していますので比較することは可能ですが、 チェックすべきポイント等ありましたら教えていただければありがたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • smartyについて

    phpからassignしテンプレートに表示するには問題ないのですがテンプレートでassignし 表示させたく単純に以下のようにしてみましたがエラーになってしまいます。 <{assign var="aaa"value="名前"}> <{$aaa}> ※デリミタ設定は『<{』と『}>』で指定してます エラー内容は以下の通りです。 Fatal error: Smarty error: [in テンプレートファイル line assignしている行]: syntax error: invalid attribute name: '=' (Smarty_Compiler.class.php, line 1550) in ~中略~\Smarty\Smarty.class.php on line 1093 なんとなくではありますが'='が原因のような事はわかるのですが解決できずにおります。 この場合どうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • Smarty変数の値をJavascript変数代入

    よろしくお願いします。 SmartyのテンプレートにPHPファイルからassignされた変数を、 Javascriptの変数に割り当てたいと思います。 Smartyのテンプレート内では、デフォルトの設定だと、 {$hoge} として、値をHTMLとして書き出す仕様ですが、 色々な諸事情から、このデフォルト設定を、 {{$hoge}} として、{ を二度重ねないと機能しないように設定変更しています。 そこで、下記のようなJavascriptを実行しても上手くいかず、かなりはまってしまってます。 お助けください。 ※ダメな例 <script type="text/javascript"> var balloonA = {{$hoge}}; document.writeln (balloonA); </script> ※↓これだと当然出力されます。 ※aaaaa と表示される。 <script type="text/javascript"> var balloonA = "aaaaa"; document.writeln (balloonA); </script> なぜ、上の書き方だと変数内の値を取得できないのでしょうか? "{{$hoge}}"や'{{$hoge}}' として試しました。でもだめです。 色々ネットで探しましたが、 {literal} を使って・・・・というのもやりましたが、ダメでした。 そもそも、Smartyのデフォルト設定を {{ に変更しているので関係ないと思います。 ん~~何卒お力をおかしください。

    • 締切済み
    • PHP
  • Smartyについて

    Smartyについて Smartyをインストールしました。 OS:ubuntu インストール先:/usr/local/lib/Smarty-2.6.26 php.ini[include_path]の設定:/usr/local/lib/Smarty-2.6.26/libs/を追加 /var/www/以下にtestフォルダ作成 /var/www/test/index.html | /test/index.php chmod 644 | /tempalates chmod 775 templates | / index.tpl chmod 644 /templates_c chmod 775 templates_c /configs chmod 775 configs /cache chmod 775 cache index.phpの内容 <?php require_once(”Smarty.class.php"); $o_smarty=new Smarty(); $o_smarty->template_dir="./templates/"; $o_smarty->compile_dir="./template_c/"; $o_smarty->assign("name","world"); $o_smarty->display("hello.tpl"); ?> index.tplの内容 <html> <head> <title>Hello,world</title> </head> <body> Hello,{$name}! </body> </html> http://web.domain/test/index.php を入力するとエラーは出ませんが、何も表示されません。 これだけで、原因を特定出来ないのかもしれませんが、何処が悪いのでしょうか? 御教示お願いいたします。

  • Smartyのテンプレート

    出来なくて困っていることがあります。 Smartyのテンプレートは通常「templates」フォルダに格納すると思いますが、そのファイルを書き換えることは可能でしょうか? 流れとして PHPで既存のテンプレートを表示 ↓ その中のPOSTデータを元に既存のテンプレートを上書きして保存 fopenのwで開き、smarty->fetchで情報を載せたデータを作り、fwriteで同じファイルに上書きしようとおもったのですが、うまくいきません。 そもそもtemplatesフォルダの中身をプログラムで更新できるものなのか、できるならどのようにするのがよいのか、お分かりになる方がいましたらご教授願います。

    • 締切済み
    • PHP