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

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}にヒントがありそうなんですが・・記述の仕方が
分かりませんでした。分かる方、ご教授頂ければ幸いです。

●質問者: snaa1d_1
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CNT HTML LOOP name PHP
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● yamaneroom
●23ポイント

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

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


2 ● m-nisi
●23ポイント

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

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/


3 ● esecua
●22ポイント

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

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/


4 ● bayan
●22ポイント

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

関連質問


●質問をもっと探す●



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