ホームページ > バックエンド開発 > PHPチュートリアル > thinkphp テンプレートで配列をループしても、必要なデータがループアウトされない

thinkphp テンプレートで配列をループしても、必要なデータがループアウトされない

WBOY
リリース: 2016-06-23 13:26:48
オリジナル
904 人が閲覧しました

プロジェクト設定ファイル config.php に配列を書きました。そのコードは

/*网站左侧栏目导航*/	'menu' => array(	   'headnav' => '控制面板',	   'subnav' => array(		array('name' => '系统设置', 'menumark' => 'System', 'url' => 'System/index'),		array('name' => '导航管理', 'menumark' => 'Nav', 'url' => 'Nav/navList'),		array('name' => '广告图片', 'menumark' => 'Show', 'url' => 'Show/showList'),		array('name' => '管理列表', 'menumark' => 'Admin', 'url' => 'Admin/adminList'),	   ),	),
ログイン後にコピー

テンプレート内のコードは次のとおりです:
 <foreach name='menu' key='k' item='v'>						<div class="fenlei">				<h3 class="fl_tb6"><s></s>{$v.headnav}</h3>				<ul >                  <volist name='v["subnav"]' key='k2' id='v2'>										<li><a href="">{$v2.name}</a></li>										</volist>						  </ul>				<div class="clear"></div>			</div>			</foreach>
ログイン後にコピー

以前に別のフレームワークを書いたことがあるので、とても落ち込んでいます。ですが、thinkphp では動作しませんので移植する必要があります。


ディスカッションへの返信(解決策)

foreachのmenuの値はどうやって取得したんですか...

config.phpに書いた配列を利用する場合はC言語で取得する必要があります() メソッドを制御します。プロセッサでは、まず $this->assign('menu', C('menu')); それからそれを走査します

config.php に書かれた配列を使用する場合、それを取得するには、C() メソッドを使用する必要があります。まずコントローラーで $this->assign('menu', C('menu')); それからそれを走査します


値をパブリック コントローラーに割り当てました。そしてそれを印刷することができます

あなたは間違いを犯しました ループのオブジェクト、コードの変更された部分は次のとおりです:

			<h3 class="fl_tb6">				<s></s><if condition='$k eq "headnav"'>{$menu["headnav"]}</if>			</h3>			<if condition='$k EQ "subnav"'>                <ul >                	<volist name='$menu["subnav"]' key='k2' id='v2'>                        <li><a href="">{$v2.name}</a></li>                    </volist>                </ul>            </if>
ログイン後にコピー
ログイン後にコピー

ループのオブジェクトが間違っています、コードの変更された部分は次のとおりです:

			<h3 class="fl_tb6">				<s></s><if condition='$k eq "headnav"'>{$menu["headnav"]}</if>			</h3>			<if condition='$k EQ "subnav"'>                <ul >                	<volist name='$menu["subnav"]' key='k2' id='v2'>                        <li><a href="">{$v2.name}</a></li>                    </volist>                </ul>            </if>
ログイン後にコピー
ログイン後にコピー


これは間違っているようです、次のレベルの配列を取り出すことができません

Put volist ラベルを foreach ラベルに変更してみてください

                    <foreach name='$menu["subnav"]' key='k2' item='v2'>                        <li><a href="">{$v2.name}</a></li>                    </foreach>
ログイン後にコピー
ログイン後にコピー

volist ラベルを foreach ラベルに変更してみてください

                    <foreach name='$menu["subnav"]' key='k2' item='v2'>                        <li><a href="">{$v2.name}</a></li>                    </foreach>
ログイン後にコピー
ログイン後にコピー


これには何もありません元の作者の書き方は間違っていません。このように、配列をループアウトすることができます。

config.php の配列の正しい定義は次のようになります:

/*网站左侧栏目导航*/	'menu' => array(	  'menu[1]' => array(	      'headnav' => '控制面板',	      'subnav' => array(		         array('name' => '网站设置', 'menumark' => 'System', 'url' => 'System/index'),		         array('name' => '导航管理', 'menumark' => 'Nav', 'url' => 'Nav/navList'),		         array('name' => '广告管理', 'menumark' => 'Show', 'url' => 'Show/showList'),		         array('name' => '管理列表', 'menumark' => 'Admin', 'url' => 'Admin/adminList'),		       )			 ),	 'menu[2]' => array(	      'headnav' => '单页面管理',	      'subnav' => array(		         array('name' => '单页面管理', 'menumark' => 'Page', 'url' => 'Page/pageList'),		       )	      ),	 ),
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

テンプレートのループ タグを変更するだけです。

config.php の配列の正しい定義は次のようになります:

/*网站左侧栏目导航*/	'menu' => array(	  'menu[1]' => array(	      'headnav' => '控制面板',	      'subnav' => array(		         array('name' => '网站设置', 'menumark' => 'System', 'url' => 'System/index'),		         array('name' => '导航管理', 'menumark' => 'Nav', 'url' => 'Nav/navList'),		         array('name' => '广告管理', 'menumark' => 'Show', 'url' => 'Show/showList'),		         array('name' => '管理列表', 'menumark' => 'Admin', 'url' => 'Admin/adminList'),		       )			 ),	 'menu[2]' => array(	      'headnav' => '单页面管理',	      'subnav' => array(		         array('name' => '单页面管理', 'menumark' => 'Page', 'url' => 'Page/pageList'),		       )	      ),	 ),
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

テンプレートのループ タグを変更するだけです。

。 。 。 。 。 。

missaqunianx... これに問題はありますか?

config.php の配列の正しい定義は次のようになります:

/*网站左侧栏目导航*/	'menu' => array(	  'menu[1]' => array(	      'headnav' => '控制面板',	      'subnav' => array(		         array('name' => '网站设置', 'menumark' => 'System', 'url' => 'System/index'),		         array('name' => '导航管理', 'menumark' => 'Nav', 'url' => 'Nav/navList'),		         array('name' => '广告管理', 'menumark' => 'Show', 'url' => 'Show/showList'),		         array('name' => '管理列表', 'menumark' => 'Admin', 'url' => 'Admin/adminList'),		       )			 ),	 'menu[2]' => array(	      'headnav' => '单页面管理',	      'subnav' => array(		         array('name' => '单页面管理', 'menumark' => 'Page', 'url' => 'Page/pageList'),		       )	      ),	 ),
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

テンプレートのループ タグを変更するだけです。


このメソッドを修正したところ、配列はループアウトされました。ありがとうございます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート