私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【PHP】 Smarty 隔離スレ 【テンプレート】
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
どうも、自己解決しました。
お騒がせしました
お騒がせしました
勘違いしてたというか参考にしてたページがわかりにくかったというか、
要するに
.tplでの記述は {insert name="hogeAction"}
スクリプトファイルは insert.hogeAction.php
ファイルの格納場所は /pluginsディレクトリ
として入れてりゃ良いだけの話だった。自前modifierとかわらんかった。
insertタグのscript属性とかなくても良いものを必須みたいに書いてたり、
関数名(function insert_hogeAction(-,-){-})を嘘書いてるサイトみて
変なことやりまくってたよ。恥。
要するに
.tplでの記述は {insert name="hogeAction"}
スクリプトファイルは insert.hogeAction.php
ファイルの格納場所は /pluginsディレクトリ
として入れてりゃ良いだけの話だった。自前modifierとかわらんかった。
insertタグのscript属性とかなくても良いものを必須みたいに書いてたり、
関数名(function insert_hogeAction(-,-){-})を嘘書いてるサイトみて
変なことやりまくってたよ。恥。
>>761
うん、公式がイマイチわからなくて他のサイトみてたらハマっちゃって。
今また公式見返してるけどやっぱりよくわからない
http://www.smarty.net/manual/ja/language.function.insert.php
「{insert} 関数の名前は、 ネームスペースの衝突を避けるために "insert_" によって始まる必要があります。」
ってあるけど、それじゃ上手くいかなくて
smarty_insert_hogeAction() って形でやっと上手くいったからなぁ…
こっちの方が公式よりわかりやすかった、俺が物わかり悪いんだろうけど
http://www.y2sunlight.com/ground/?PHP5.0%2F8.Smarty%A4%F2%CD%FD%B2%F2%A4%B9%A4%EB
うん、公式がイマイチわからなくて他のサイトみてたらハマっちゃって。
今また公式見返してるけどやっぱりよくわからない
http://www.smarty.net/manual/ja/language.function.insert.php
「{insert} 関数の名前は、 ネームスペースの衝突を避けるために "insert_" によって始まる必要があります。」
ってあるけど、それじゃ上手くいかなくて
smarty_insert_hogeAction() って形でやっと上手くいったからなぁ…
こっちの方が公式よりわかりやすかった、俺が物わかり悪いんだろうけど
http://www.y2sunlight.com/ground/?PHP5.0%2F8.Smarty%A4%F2%CD%FD%B2%F2%A4%B9%A4%EB
下記のように、フォームでエラーがあればp要素を表示、なければ何も表示しない場合、
みなさんは、どこまで、どんな方法でテンプレートを利用していますか?
<p class="error">※必須項目です。記入してください。</p>
<p><input type="text" name="mail" value=""></p>
1. エラーメッセージは最初からpでマークアップ済み、そのままassign、smartyには{}のみ
{$errors.mail}
2. エラーメッセージはテキスト、assign時に空欄かどうか判定してpでマークアップ、smartyには{}のみ
{$errors.mail}
3. $errorsにはテキスト、そのままassign、smartyで{if}処理
{if $errors.mail}<p class="error">{$errors.mail}</p>{/if}
4. $errorsにはテキスト、そのままassign、smartyで関数処理
{$errors.mail|markupFunction}
デザイナさんと分業する場合、
プログラム側がマークアップに関わらない3.が一番いい気がしているのですが、
少しテンプレートファイルが煩雑になるのが気になったりもします。
エラーメッセージマークアップ用の小さなテンプレートファイルを作っておいて、
4.のmarkupFunctionから読み出して利用すると比較的キレイな気もしますが、
テンプレートファイルが小分けになるのも煩雑といえば煩雑な気もします。
みなさんは、どこまで、どんな方法でテンプレートを利用していますか?
<p class="error">※必須項目です。記入してください。</p>
<p><input type="text" name="mail" value=""></p>
1. エラーメッセージは最初からpでマークアップ済み、そのままassign、smartyには{}のみ
{$errors.mail}
2. エラーメッセージはテキスト、assign時に空欄かどうか判定してpでマークアップ、smartyには{}のみ
{$errors.mail}
3. $errorsにはテキスト、そのままassign、smartyで{if}処理
{if $errors.mail}<p class="error">{$errors.mail}</p>{/if}
4. $errorsにはテキスト、そのままassign、smartyで関数処理
{$errors.mail|markupFunction}
デザイナさんと分業する場合、
プログラム側がマークアップに関わらない3.が一番いい気がしているのですが、
少しテンプレートファイルが煩雑になるのが気になったりもします。
エラーメッセージマークアップ用の小さなテンプレートファイルを作っておいて、
4.のmarkupFunctionから読み出して利用すると比較的キレイな気もしますが、
テンプレートファイルが小分けになるのも煩雑といえば煩雑な気もします。
自分はクラスだけでやってる。
エラーは常に埋め込まれ、CSSで非表示にしておく。もしエラーなら親要素にerrorというクラスを与えて、その子要素のエラーを表示するCSSを書いておく。
div p{ display:none }
div.error p{ display:block }
これでエラー時のテキストもデザイナー側で書ける。
親要素は
<div class='{$error.title}'>
って感じで、タイトル項目がエラーなら error.title に 'error' を assign しておくだけ。
エラーは常に埋め込まれ、CSSで非表示にしておく。もしエラーなら親要素にerrorというクラスを与えて、その子要素のエラーを表示するCSSを書いておく。
div p{ display:none }
div.error p{ display:block }
これでエラー時のテキストもデザイナー側で書ける。
親要素は
<div class='{$error.title}'>
って感じで、タイトル項目がエラーなら error.title に 'error' を assign しておくだけ。
>>770
CSS切っている環境とか携帯対応を考えた場合は向かない仕様だな
CSS切っている環境とか携帯対応を考えた場合は向かない仕様だな
>>768
汎用性やら考えると3じゃないかな。
他の方法だと、特定箇所だけ見た目を変えたい時にデザイナ側で対応しにくい気がする。
テンプレートを関数もどきとして使うような方法もありかもしれない。
// エラー表示箇所
{include file="error.tpl" error=$errors.mail}
// エラー表示テンプレート error.tpl
{if $error}
<p class="error">{$error}</p>
{/if}
汎用性やら考えると3じゃないかな。
他の方法だと、特定箇所だけ見た目を変えたい時にデザイナ側で対応しにくい気がする。
テンプレートを関数もどきとして使うような方法もありかもしれない。
// エラー表示箇所
{include file="error.tpl" error=$errors.mail}
// エラー表示テンプレート error.tpl
{if $error}
<p class="error">{$error}</p>
{/if}
>>774
なるほど。4.の別解のような感じですが、
それだとincludeするテンプレファイルまでデザイナさんに任せられるので、
複数パターンのテンプレファイルが用意できたり汎用性が高そうですね。
図らずも(?)、{if}による改行問題も、
別ファイルに追い出すことで解決できてるし、
なかなか良いかもしれません。
なるほど。4.の別解のような感じですが、
それだとincludeするテンプレファイルまでデザイナさんに任せられるので、
複数パターンのテンプレファイルが用意できたり汎用性が高そうですね。
図らずも(?)、{if}による改行問題も、
別ファイルに追い出すことで解決できてるし、
なかなか良いかもしれません。
Smartyは遅いって意見ありますが、体感レベルで明らかに遅いですか?
1秒2秒遅くなった経験がある人いるんでしょうか?
1秒2秒遅くなった経験がある人いるんでしょうか?
>>776
古いサーバPC上でキャッシュを無効にして使っても、0.001秒の処理が0.002秒になる程度。
数値的には2倍だが、体感的にはまずわからない。
素のPHPコードに比べたら遅いと言えるが、
個人的にはメリットの方が桁違いに上かな。
古いサーバPC上でキャッシュを無効にして使っても、0.001秒の処理が0.002秒になる程度。
数値的には2倍だが、体感的にはまずわからない。
素のPHPコードに比べたら遅いと言えるが、
個人的にはメリットの方が桁違いに上かな。
多数の他人に更新させる場合はキャッシュオフ?
掲示板とかね
有効にしといて書き込まれたタイミングでキャッシュ削除するのかな
掲示板とかね
有効にしといて書き込まれたタイミングでキャッシュ削除するのかな
ぴーえちぴー5.3.0
りなくす
Smartyでテンプレートが無い場合に白い画面になっちゃうんで、エラーをハンドリングしたいんですけど出来ないでしょうか?
テンプレートがあるか判定なんてめんどーなことしないといけないんですかね?
りなくす
Smartyでテンプレートが無い場合に白い画面になっちゃうんで、エラーをハンドリングしたいんですけど出来ないでしょうか?
テンプレートがあるか判定なんてめんどーなことしないといけないんですかね?
ちょろっとググってみたらこんなんもあった
(2)Smartyのファイルを調べてみる
画面が真っ白になった原因として、Smartyのファイルが壊れていることがあるのです。
http://xoops-manual.net/modules/smartsection/item.php?itemid=17
(2)Smartyのファイルを調べてみる
画面が真っ白になった原因として、Smartyのファイルが壊れていることがあるのです。
http://xoops-manual.net/modules/smartsection/item.php?itemid=17
>>797
おぉ、まさに欲しかった回答です。
ありがとうございます。
そのワーニングで間違いないです。
1…書き換えるのは好きじゃないです。
2…うーん、処理に悩みそうです。
3…これが簡単そうです。
ちょっとがんばってみます。
たすかります。
おぉ、まさに欲しかった回答です。
ありがとうございます。
そのワーニングで間違いないです。
1…書き換えるのは好きじゃないです。
2…うーん、処理に悩みそうです。
3…これが簡単そうです。
ちょっとがんばってみます。
たすかります。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- 【PHP】 Smarty 【テンプレートエンジン】 第2章 (981) - [48%] - 2012/1/29 17:15
- 【PHP】Laravel【フレームワーク】 (887) - [48%] - 2019/4/23 21:00
- 【PHP】Ethna part.2【国産フレームワーク】 (315) - [48%] - 2019/5/9 7:45 ○
- 【PHP】2chat開発スレ【2chを越える】 (1000) - [46%] - 2016/10/27 8:19
- 【PHP】Laravel【フレームワーク】 Part.9 (884) - [40%] - 2022/3/13 12:00
- 【PHP】Laravel【フレームワーク】 Part.8 (148) - [40%] - 2021/8/8 21:30
トップメニューへ / →のくす牧場書庫について