重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

出来なくて困っていることがあります。

Smartyのテンプレートは通常「templates」フォルダに格納すると思いますが、そのファイルを書き換えることは可能でしょうか?

流れとして

PHPで既存のテンプレートを表示

その中のPOSTデータを元に既存のテンプレートを上書きして保存

fopenのwで開き、smarty->fetchで情報を載せたデータを作り、fwriteで同じファイルに上書きしようとおもったのですが、うまくいきません。

そもそもtemplatesフォルダの中身をプログラムで更新できるものなのか、できるならどのようにするのがよいのか、お分かりになる方がいましたらご教授願います。

A 回答 (5件)

DBが使えないのであれば、CSVファイルなどにデータを書き込むのが妥当かと。


オープンできないのは権限がないと思われます。phpinfo()のopen_basedirを確認してください。「templates」はopen_basedir以下にありますか?

この回答への補足

返信遅くなりました。

phpinfo()にて確認したのですが、no value となってました。

詳しくわからないのですが、これではダメということでしょうか?

またダメならその場合の解決策を教えていただけますでしょうか?

よろしくお願い致します。

補足日時:2007/10/19 20:43
    • good
    • 0

>それでデータテーブルの下部に{$変数}を用意し、


>そこに登録データを当てはめてその情報を上書きできるように構成したのです。

それでしたら{$変数}部分を別テンプレートから作成した文字列をファイルに吐き出し、
そのファイルをトップページのテンプレから{include ~~}としたほうが良い気がします。
そうすればテンプレートは静的なままに動的部分を制御することが出来るかと。

まぁ色々やり方はあると思いますがね
    • good
    • 0

#1,#2さんにさらに追加で


Smartyはテンプレート内でif文が使えますので
表示内容を条件ごとに動的に変更することが
簡単にできます。

>Smartyのテンプレートは通常「templates」フォルダに格納すると思いますが、
各ディレクトリの割り当ては簡単に変更することができます。
    • good
    • 0

動的に変えたらテンプレートと言いません^^;


No.1の方の言うとおり設計をもう一度良く見直したほうが良いでしょう。

// とりあえずアクセス権が大丈夫であれば次はfopenしているパスを確認しましょう
// 相対なのか絶対なのか、カレントはどこにあるのかなど。
// そもそもsmartyはセキュリティのためにアクセス権を付与してないパターンが多かった気がしますが。
    • good
    • 0

「うまくいかない」というのはどういう状況なのでしょうか。

エラーが表示されるのですか?

テンプレートファイルも通常のテキストファイルなので、PHPから操作は可能です。まずアクセス権を見直してみてはいかがでしょうか。

#余談ですが、通常定型的な部分のみテンプレート(雛型)にするので、
#本当にテンプレートを動的に変える必要があるのか再考する事を
#おすすめします。

この回答への補足

数々のご意見ありがとうございます!

本来テンプレートを変更すべきでないとわかってはいるのですが、今回依頼があった状況が、DBを使えず、いろいろな項目を入力したら複数のファイルをそれに合わせて自動生成するものでした。

そのTOPファイルの構成が要望で、登録フォームと登録されているリストを同ページに表示するものでした。
それでデータテーブルの下部に{$変数}を用意し、そこに登録データを当てはめてその情報を上書きできるように構成したのです。

エラーはファイルがtemplatesフォルダがオープンしませんでした。
アクセス権限は777になっています。

補足日時:2007/10/16 14:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!