人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

smartyで出力した値を同ページ内のphp部分に出力したいと考えています。

■サンプル
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{$name}

{php}

$filename = '{$name}';←ここに出力したい

if (file_exists($filename)) {
print "ファイルあり";
} else {
print "ファイルなし";
}

{/php}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

当然ながら上記のような方法ではできないのですが、
うまく取得する方法はありますでしょうか?

本来はSmartyでやりたいのですが、オープンソースのEC-CUBE内に
設置するため、他の部分が把握できず困っています。

上記のようなことができればシンプルなコードにはなりませんが、
すべて解決しますのでご教授宜しくお願い致します。

●質問者: gelgelgel
●カテゴリ:インターネット ウェブ制作
✍キーワード:EC-CUBE name PHP print Smarty
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● bayan
●40ポイント

ひとつ、Smarty のインスタンスをグローバル変数として参照し、

get_template_vars() で割り当てられた値を得るというのを

思いつきました。

■PHPスクリプト hoge.php

$smarty = new Smarty;

//ディレクトリ指定等は省略...

$smarty->assign('name','foo');
$smarty->display('hoge.tpl');

■テンプレートファイル hoge.tpl

{$name}

{php}

global $smarty;
$filename = $smarty->get_template_vars('name');

if (file_exists($filename)) {
print "ファイルあり";
}else{
print "ファイルなし";
}

{/php}

それから、{php}{/php} の中では $this という変数で Smarty のインスタンスにアクセスできるようです。

http://www.phppro.jp/phpmanual/smarty/language.function.php.html

{$name}

{php}

$filename = $this->get_template_vars('name');

if (file_exists($filename)) {
print "ファイルあり";
}else{
print "ファイルなし";
}

{/php}

と書いても動きました。

◎質問者からの返答

ご回答ありがとうございます!!

私が探し求めてたのはものズバリです!!

通常のsmartyの環境では動作確認できたのですが、

EC-CUBE内では動きませんでした。分かりにくくなるため

省いていたのですがEC-CUBE内ではSmartyのタグが

hiddenタグで囲まれています。

▼ここから

$filename = $this->get_template_vars('arrProductsClass[0].name');

$filename = $this->get_template_vars('arrProductsClass[0].name|escape');

$filename = $this->get_template_vars('');

▲ここまで

というのでOKかと思ったのですがいずれもうまくいきませんでした。

ご存知でしたら宜しくお願い致します。


2 ● suinger
●40ポイント ベストアンサー

以下はどうでしょうか?

{$name}

{php}

$filename = '{/php}{$name}{php}';←ここ

if (file_exists($filename)) {

print "ファイルあり";

} else {

print "ファイルなし";

}

{/php}

◎質問者からの返答

これは最初のほうに試しました・・

エラー表示になるかと思います。

一度お試しになってからご回答お願いします。


3 ● satoumizu
●0ポイント

すごい手っ取り早い方法で

テンプレートにアサインする前に

$_GET['test'] = $name;

して

$filename = $_GET['test'];

しちゃえば

◎質問者からの返答

それができないので困っています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ