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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

Q&A

解決済

1回答

2656閲覧

cakePHPのviewにてforeach()を使わず出力する

pecchan

総合スコア555

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

0グッド

0クリップ

投稿2016/04/10 21:51

編集2016/04/10 23:05

初歩的な質問ですみません。

viewに渡すデータが毎回必ず1件です。
なのでforeachを使って出力するのが煩わしいです。

以下のように出力したいのですが方法、記述が分かりません。

php

1<?php echo $test.name ?>

参考サイトがどこもforeachでの出力方法ばかりでした。

【試したこと】
コントローラでは配列で受けて渡してます

php

1$test= $this->Test->findById(100); 2$this->set('test', $test);

なのでコントローラから1件のみ渡せば良いのかと思い、

php

1$t = array_values($test)[0]; 2$this->set('test', $t); 3

とし、

<?php echo $test.name ?>しましたがエラーになりました。

PS:smartyのようにプロパティ(testオブジェクトのnameプロパティ)を指定して出力したいのです。
{$test.name}

こういう風に出力したい場合、どういう方法があるのでしょうか?
宜しくお願い致します。

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

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

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

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

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

mpyw

2016/04/10 22:55 編集

「エラーになりました」で片付けるのではなくエラー内容をちゃんと読むべきです.<?php echo $test.name ?>,そもそもこれ「$test」という変数の値と「name」という定数の値を文字列として結合して出力する,というコードですが,「name」という定数は存在しているんですか?
pecchan

2016/04/10 23:03

文字列になって出力されてしまっているのは、見れば一目瞭然です。 定数ではないです。こちらはプロパティです。 smartyのようにプロパティで出力出来ないのでしょうか?
guest

回答1

0

ベストアンサー

連想配列の場合

php

1<?php echo $test['name'] ?>

オブジェクトの場合

php

1<?php echo $test->name ?>

と書くべきところなんじゃないですかね.他の言語と混同されてませんか?

なお,<?php echo $var ?><?=$var?> で書くことができます.また,HTMLとしてテキストデータを出力する際には,XSS攻撃を防ぎつつ正しく本来のデータを表示するため,htmlspecialchars関数を通すべきです.CakePHPは標準のラッパー関数hを持っているみたいですね.

php

1<?=h($test['name'])?>

php

1<?=h($test->name)?>

投稿2016/04/10 23:00

mpyw

総合スコア5223

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

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

pecchan

2016/04/10 23:12

有難う御座います。 仰る通り、初めてのPHPでview部分がSmartyだった経緯があり、 同じように出力できないのかと思いました。 XSS攻撃なども知りませんでした。 ご親切に有難う御座います。
mpyw

2016/04/11 00:39

ちなみにSmartyはこのh関数を通す処理相当のことをデフォルトでやってくれています.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問