PHP の Smarty に関する質問です。


今現在、以下のようなHTMLソースがあります。value="" の部分は Smarty 変数を埋め込んでいます。

<input name="mytext_a_1" type="text" value="{$mytext_a_1}">
<input name="mytext_b_1" type="text" value="{$mytext_b_1}">

<input name="mytext_a_2" type="text" value="{$mytext_a_2}">
<input name="mytext_b_2" type="text" value="{$mytext_b_2}">

<input name="mytext_a_3" type="text" value="{$mytext_a_3}">
<input name="mytext_b_3" type="text" value="{$mytext_b_3}">

ここでは mytext_a_1~mytext_a_3 までしか書いてませんが、実際には、
mytext_a_1~mytext_a_10くらいテキストボックスありますので、
できれば HTML ソースを Smarty のループ構文で表示したい所です。

ループ構文で表示しようとして、

{section name=cnt start=1 loop=10}
<input name="mytext_a_{$smarty.section.cnt.index}" type="text" value="{$mytext_a_3}">
<input name="mytext_b_{$smarty.section.cnt.index}" type="text" value="{$mytext_b_3}">
{/section}

ここまでは書けたのですが、value="" の部分をどう記述すればよいか分かりません。
動的に変数を作る{assign}にヒントがありそうなんですが・・記述の仕方が
分かりませんでした。分かる方、ご教授頂ければ幸いです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/07/31 16:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:yamaneroom No.1

回答回数1040ベストアンサー獲得回数61

ポイント23pt

配列を使わなければ無理。

http://www.scollabo.com/banban/php/php_05.html

id:m-nisi No.2

回答回数159ベストアンサー獲得回数3

ポイント23pt

下記一例として回答します。

PHP側は

$data = array(

"1" => array(

"mytext_a" => "test_a_1",

"mytext_b" => "test_b_1",

),

"2" => array(

"mytext_a" => "test_a_2",

"mytext_b" => "test_b_2",

),

"3" => array(

"mytext_a" => "test_a_3",

"mytext_b" => "test_b_3",

),

);

$smarty->assign("data",$data);

テンプレート側は

{foreach from=$data key=k item=i}

<input name="mytext_a_{$k}" type="text" value="{$i.mytext_a}">

<input name="mytext_b_{$k}" type="text" value="{$i.mytext_b}">

{/foreach}

こんな感じでいけると思います。

URLはダミー。

http://www.yahoo.co.jp/

id:esecua No.3

回答回数510ベストアンサー獲得回数10

ポイント22pt

うる覚えですが、こんなのかと:

php

$value = array();

$value['a'][3] = "hogehoge";

$value['b'][3] = "i love hatena";

$smarty->assign("mytext_a_3", $value['a'][3]);

$smarty->assign("mytext_b_3", $value['b'][3]);

こういうことかなぁ?

http://smarty.php.net/

id:bayan No.4

回答回数100ベストアンサー獲得回数13

ポイント22pt

2番さんの回答と似ておりますが。。。一例です。



■PHP側の記述

$mytext_a_1~ の変数の内容を、input の name の値をキーにして、

配列に詰め込んだものをSmarty に渡します。

$data = array();

$data["mytext_a_1"] = $mytext_a_1;

$data["mytext_b_1"] = $mytext_b_1;

$data["mytext_a_2"] = $mytext_a_2;

$data["mytext_b_2"] = $mytext_b_2;

$data["mytext_a_3"] = $mytext_a_3;

$data["mytext_b_3"] = $mytext_b_3;

$smarty->assign('data', $data);


なお配列を用意するところは次のように書いてもおなじです。

$data = array(

"mytext_a_1" => $mytext_a_1

, "mytext_b_1" => $mytext_b_1

, "mytext_a_2" => $mytext_a_2

, "mytext_b_2" => $mytext_b_2

, "mytext_a_3" => $mytext_a_3

, "mytext_b_3" => $mytext_b_3

);


■テンプレート側の記述

foreach のループで key で配列要素のキーを読んで、

input の name にセット、item で配列要素の値を読んで

input の value にセットします。

{foreach from=$data key=k item=v}

<input type="{$k}" type="text" value="{$v}">

{/foreach}

http://www.smarty.net/manual/ja/language.function.foreach.php

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません