symfony1.1での質問です。

action内で①で値を代入しています。この際にtempletes側では②のように表示しています。
正常に1が表示されます。
①$this->hatena = 1;
②<?php echo $hatena; ?>
上記を配列で持ちたいたので、③④に変更しましたが未定義の変数とエラーがでます。
③$this->hatena[0] = 1;
④<?php echo $hatena[0]; ?>
単に通常のデータのやり取りを配列にするだけではエラーになります。
何か良い方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2009/01/14 13:38:45
  • 終了:2009/01/17 17:20:13

ベストアンサー

id:AKIMOTO No.3

@akky回答回数27ベストアンサー獲得回数82009/01/15 00:04:00

ポイント32pt

はい、$this->temp[$i]に直接代入するをあきらめて、別の配列に代入を済ませた後で$this->tempに代入することで、配列をviewに渡すことができます。

autoloadの仕組みを使っているクラス(sfActions)ではxv1700さんが書かれた書き方の代入はエラーになるということですから、代入の仕方を変えたのが(2)の回答で、これであれば、

for ($i=0;$i<3;$i++) :

print($temp[$i]);

endfor;

でviewから表示できます。(2)の例とあわせるなら$tempではなく$hatenaとなりますが。

id:xv1700

ありがとうございます。

実現できました。

2009/01/15 10:41:21

その他の回答(2件)

id:AKIMOTO No.1

@akky回答回数27ベストアンサー獲得回数82009/01/14 15:25:36

ポイント32pt

$this->hatena[0] = 1;

$this->hatena = array(0 => 1);

にする、ではどうでしょうか? もし配列の添え字の0に大きな意味がないのであれば、

$this->hatena = array(1);

でも構いません。

参考: http://tdiary.ishinao.net/20070528.html

id:xv1700

回答ありがとうございます。

参考の__SET関数を実装できそうか調査してみます。

書き足します。

配列①の場合に何か良い方法がありませんでしょうか?

if (i=0;i<3;i++)

$this->hatena = $hairetu[$i];←①

2009/01/14 16:21:28
id:AKIMOTO No.2

@akky回答回数27ベストアンサー獲得回数82009/01/14 17:16:03

ポイント16pt

ご質問の意味を取り違えているかもしれませんが、こういうことでしょうか?

for ($i=0;$i<3;$i++) {

$temp[$i] = $hairetu[$i];

}

$this->hatena = $temp;

id:xv1700

回答ありがとうございます。

すいません、言葉たらずでした。

for ($i=0;$i<3;$i++)

①$this->temp[$i] = $hairetu[$i];

上記で値を格納します。

下記のようにテンプレート側で同じように表示させたいんです。

<?php for ($i=0;$i<3;$i++) : ?>

<?php ptint($temp[$i]); ?>

<?php endfor; ?>

実際にはこのロジックでは実現できません。

①$this->temp[$i]で未定義の変数エラーがでます。 $this->tempなら問題はないのですが

配列にするのが問題みたいです。それで他に方法がないかと相談してみということです。

説明が不足してるかもしれませんが、よろしくお願い致します。

2009/01/14 19:11:32
id:AKIMOTO No.3

@akky回答回数27ベストアンサー獲得回数82009/01/15 00:04:00ここでベストアンサー

ポイント32pt

はい、$this->temp[$i]に直接代入するをあきらめて、別の配列に代入を済ませた後で$this->tempに代入することで、配列をviewに渡すことができます。

autoloadの仕組みを使っているクラス(sfActions)ではxv1700さんが書かれた書き方の代入はエラーになるということですから、代入の仕方を変えたのが(2)の回答で、これであれば、

for ($i=0;$i<3;$i++) :

print($temp[$i]);

endfor;

でviewから表示できます。(2)の例とあわせるなら$tempではなく$hatenaとなりますが。

id:xv1700

ありがとうございます。

実現できました。

2009/01/15 10:41:21

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません