質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

1072閲覧

CakePHP Htmlヘルパー ラベルに配列が使用できない

kaijisato

総合スコア7

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2017/02/03 14:25

CakePHP初心者です。
以下のようなコードがうまく表示されません。
アドバイス頂けますでしょうか。
以下のコード多くのアクションを省略しておりますが、カテゴリー、アーティスト、CDアルバム、CDアルバムの感想を表示するようなシステムを想定しております。

以下のビューの$selectedCds[$i]['Cd']['cd_name']の部分は正常に表示されています。

<td><?php $this->Html->link($selectedCdImpressions[$i], array('controller' => 'artists' , 'action' => 'showImpressions')); ?></td> の部分が上手く表示されません。 なぜなのかわかりません。

Htmlヘルパー外で
for($i = 1; $i <= 5; $i ++) {
echo $selectedCdImpressions[$i];
}
などとすれば表示されます。
正常にHtmlヘルパー内で表示する方法をご教示頂けますでしょうか。

//app/Controller/ArtistController

<?php class ArtistsController extends AppController { public $scaffold; public $uses = array('Artist','Category' , 'Impression' , 'Cd'); public function showDetail() { //別のアクションから渡してきたURL末尾のパラメータを取得しています $selectedArtistId = $this->request->pass[0]; $options1 = array( 'conditions' => array( 'Cd.artist_id' => $selectedArtistId ) ); $selectedCds = $this->Cd->find('all' , $options1); $selectedCdImpressions = array(); for($i = 0; $i <= count($selectedCds); $i ++) { $options2 = array( 'conditions' => array( 'Impression.cd_id' => $selectedCds[$i]['Cd']['cd_id'] ) ); ${"selectedCdImpressions" . $i} = $this->Impression->find('count' , $options2); array_push($selectedCdImpressions , ${"selectedCdImpressions" . $i}); $this->set('selectedCds' , $selectedCds); } $this->set('selectedCdImpressions' , $selectedCdImpressions); $this->render('showDetail'); } } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //app/View/Artist/show_detail.ctp <h2>ディスコグラフィー</h2> <table> <tr> <th>アルバム名</th> <th>投稿数</th> </tr> for($i = 0; $i <= count($selectedCds); $i ++) { ?>
<?php echo $selectedCdImpressions[$i]; ?> <tr> <td><?php echo $selectedCds[$i]['Cd']['cd_name']; ?></td> **<td><?php $this->Html->link($selectedCdImpressions[$i], array('controller' => 'artists' , 'action' => 'showImpressions')); ?></td>** </tr> <?php } ?>
</table>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

popobot

2017/02/03 14:33

コードはMarkdownのコードブロックで囲ってください。
popobot

2017/02/03 14:43

「上手く表示されません」とは具体的にどういった出力を期待していて、現状どういった出力になっているのか具体的に書いてほしいです。
guest

回答1

0

自己解決

$this->Html->linkをechoしてください。
Viewではechoしなければ表示されません。

投稿2017/02/03 15:18

kaijisato

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

popobot

2017/02/03 15:21

なるほど... <?= $this->Html->link(...); ?> とする方法もあるかもしれません
kaijisato

2017/02/04 04:34

icchiiさん、修正依頼など頂いていたのに、自己解決してしまいすみませんでした。 質問を纏めようと書き出すことで混乱が整理され解決に至りました。。
popobot

2017/02/04 04:38

いいえー、自己解決できたなら、それが一番ですよ!
kaijisato

2017/02/05 06:59

ありがとうございました。 <?=〜〜〜?>なんて記法知らなかったので勉強になりました。 「知っている」と「知らない」だけで大きな違いですね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問