• 締切済み

cakephp初心者です

しょうもない質問ですいません。 コントローラで $this->set("data",$data); と書いたのですが viewに表示されません。 何が原因なのでしょうか。

noname#198194
noname#198194
  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

noname#177743
noname#177743
回答No.2

すみません、補足がついているのに気が付きませんでした……。 >ちなみにViewへの出力は >$this->render >を使ってほかのViewに出力しています。 いえ、これはコントローラー側の処理ですよね。そうではなくて、ビューのテンプレートの中で、$dataをどういう形で書き出しているのか、ということです。<$ echo $data ?>などのように、echoで出力しないとビューに値は表示されないので、そのへんはどうなっているのか、ということだったんですが。

noname#177743
noname#177743
回答No.1

これだけではなんともいえませんが、まず、$dataに値は入ってますか? 確認しました? それとビュー側はどうやって出力しています? <?php echo $dadta ?>という感じになってます?

noname#198194
質問者

補足

説明不足ですいません。 データは$this-> set の前に echo で出力しているので入っているはずです。Viwe側も大丈夫そうなのですが。 ちなみにViewへの出力は $this->render を使ってほかのViewに出力しています。

関連するQ&A

  • CakePHP2について

    viewにデータを送るときに、1の $this->set() と2の $this->request->dataは、 どう違うのでしょうか? ご教授ください。 public function view($id = null) { // レコードを選択 $this->Post->id = $id; // レコードデータを取得しビューへ送る $this->set('post', $this->Post->read());---------1 } public function edit($id = null){ $this->Post->id = $id; if($this->request->is('get')) { $this->request->data = $this->Post->read();-------2 }

    • ベストアンサー
    • PHP
  • cakephpのアソシエーションについて

    cakephp について勉強中です。 初心者なのでぜひ教えていただきたいのですが、 ・[Profile]と[Image]というテーブルがあり、ProfileについてImagesとのアソシエーションが  hasmanyなのですが、 コントローラーで  $datas = $this->Profile->find("all"); $this->set("datas",$datas); とした場合、view側でProfileのデータもImageのデータも表示されるにはどうしたらよいのでしょうか。 今は <?php foreach($datas as $data):?> <?php echo $data['Profile']['id']; ?> <?php echo $data['Image']['id']; ?> <?php endforeach; ?> とやっていますが、Imageテーブルのデータが出ません。 大変基本的なことだとは思いますがご指導いただければと思います。よろしくお願いします。

    • ベストアンサー
    • PHP
  • cakephpのビューの使い方

    cakephpのビューの使い方 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 書籍を読みながらcakephpを始めました。 フォームを利用するサンプルを試しています。 コントローラーで変数に値をセットし ビューでの変数の表示方法の記述がよくわかりません。 コントローラで $this->set("result",$result); とし ビューctpで <html> <body> <h1>送信結果</h1> <p><?=$result ?></p> </body> </html> と記述されているのですが、ブラウザには変数が表示されません。 <?php echo $result ?>と書けば表示されるのですが <?=$result ?>という書き方ですとなにも表示されません。 どなたかアドバイスをいただけると助かります。 作成日: 2010年4月2日(金) 21時05分

    • ベストアンサー
    • PHP
  • cakephpでidに紐づけて記事を表示

    cakephpでblogアプリケーションを作成しています。 /blog/記事のID のURLをクリックすると該当の記事が見れるようにしたいです。 不思議なのですが、DB側のカラム名がid(blogのID名)だと正しく表示されるのですが、DBの値をnoやnooなどid以外の値にすると何も表示されません。 デバッグのSQLさえも何も表示されない状況です。 具体的なコードを記載します。 正しく表示される場合 コントローラ class PostsController extends AppController { public $helpers = array('Html','Form'); public function index(){ $this->set('posts',$this->Post->find('all')); } public function view($xxx = null){ $this->Post->id = $xxx; $this->set('post',$this->Post->read()); } } ビュー <h2><?php echo h($post['Post']['num']); ?></h2> <p><?php echo h($post['Post']['hel']); ?></p> モデル <?PHP class Post extends AppModel { } ?> 何も表示されない場合 コントローラ 以下だけが上記と異なります。 public function view($xxx = null){ $this->Post->no = $xxx; ★この部分 $this->set('post',$this->Post->read()); } ビュー・モデルは同上で、DBのカラム名をidからnoに変更しています。 データベースの中身は以下です。 以下のidをnoに変更した場合うまくいきません。 id num hel _________________ 3 4 hello world 21 21 abcde 0 3 okokokoko 何かアドバイスいただけないでしょうか。 viewを見る際に何もデバッグ情報が出ないので何が悪いのかもわからない状況です。

    • 締切済み
    • PHP
  • CakePHP で、質問させていただきます。CakePHPは、初心者で

    CakePHP で、質問させていただきます。CakePHPは、初心者です。 app/controllers のコントローラ「mobilehellow_controller.php」で、以下のようにデータをセットして、DBにインサートしようとしていますが、何もDBには追加されません。 $saveData = array( "NUM" => $item[$hscan_offset]['kyujin_syokusyu'], "JOBTYPE" => 'kyujin_syokusyu', )); $this->Mobilehellow->create(); $this->Mobilehellow->save($saveData); 画面上には、こんな文字が表示されました。 Query: INSERT INTO "mobilehellows" ("NUM") VALUES ('nextval(''"helloworkmobilep01_NUM_seq"''') DBの構成はこれです。 NUM integer NOT NULL JOBTYPE text エラーも何も出なので、どうしてなのかわかりません。 どうか、ご存知の方お教えください。

    • ベストアンサー
    • PHP
  • CakePHPでバリデート

    質問です。 CakePHPでバリデート処理を行っているのですが、 ちょっとつかめない箇所があります。 ビュー側でformヘルパーを用いてフォームを作っていますが コントローラ側で $this->Model ->set($this->data); $this->Model->validates(); でバリデートが行われると思いますが 上記二つの式のうち 実際にバリデート処理を行っているのはどちらのしきなのでしょうか? フォームの内容がバリデートにひっかからずに判定された場合 $this->Model->validates()でtrueが 返ると思います。 これはvalidatesメソッド内で判定してそのままtureを返しているということでしょうか?

    • ベストアンサー
    • PHP
  • CakePHP 1.3について

    CakePHPが初心者です。 Views-userdetail-index.ctpにて <?php echo $form->create(null,array('type'=>'get','action'=>'./updateRecord')); ?> ~ <?php echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); ?> ~ を記述し、userdetail_controllerにて function updateRecord(){ if (!empty($this->data)){ $this->User->id = 1; $this->User->saveField('remarks','exists'); } else { $this->User->id = 1; $this->User->saveField('remarks','empty'); } $this->redirect('.'); } を記述しています。 しかし、どうしても「!empty($this->data)」の判別によってemptyとなってしまいます。 User.remarksの部分をUserdetailにして色々ためしましたが、どうしても値の受け渡しがうまくいかないのです。 どなたかご教授を宜しくお願い致します。

    • ベストアンサー
    • PHP
  • cakephpの質問2つ

    2つ質問させてください。 cakephpで、ホームページの左に項目を追加したいのですが (ホームページによくあるホームページ内リンク、ホームページ内の検索フォーム)、 layoutで指定できるのは、調べた限り、$title_for_layoutと$content_for_layoutだけでした。 当然、コントローラで取得した値は、メインの真ん中にしか、適応できず、左に適応させると、 今度はメインの真ん中の処理ができなくなってしまいます。 $content_for_layoutなどの変数(例:$sub_content_for_layout)を別個作る必要があるのでしょうか。また、そうであれば、 どのファイルに追記する必要がありますか。 コントローラで、ある変数を条件にfind()で1件だけレコードを取得して、そのデータをviewで使いたいのですが、 setした$dataの構造が確認できず、$arr['id']などの情報が取得できません。$data['テーブル名']としてviewに書くと、 すべてのカラムがAと表示され、うまくいきません。 controller: public function index(){ $cond = param['url']['name']; $data = $this->Table->find($cond); } view hoge.ctp: $arr = $data['Table']; foreach($data as $key){ echo $arr['id']; echo $arr['name']; echo $arr['phone']; } 以下、html~ 本やネットなどで調べましたが、当該情報が得られませんでした。お手数ですが、ご回答願えないでしょうか。

    • 締切済み
    • PHP
  • cakePHPについて

    現在、cakePHPを勉強しているのですが、分からなくて進めない箇所があり困っています。 ユーザーがフォームからデータを入力し、DBにデータを格納する際、フォーム項目にないデータを一緒に入力するためにはどうすればいいのか分かりません。 例)ユーザーフォーム入力欄 name email password ↓ ■DB側に格納したいデータ id(AUTO_INCREMENT) contact_id(問題箇所) name email password created modified 現在、下記のようなコードになっているのですが、ご教授頂ければ幸いです。 ■Controller/RequestController public function index(){ if(!empty($this->request->data)){ if($this->request->data[$this->Request->alias]['confirmed']){ //保存実行 //成功時に画面遷移・失敗時にメッセージを表示 if($this->Request->saveAll($this->request->data)){ $this->Session->setFlash('お申し込み有難う御座います。新規依頼が完了しました。'); $this->redirect(array('action' => 'index','controller' => 'details')); }else{ $this->request->data[$this->Request->alias]['confirmed'] == false; $this->Session->setFlash('新規依頼に失敗しました。'); } }else{ if($this->Request->saveAll($this->request->data, array('validate' => 'only'))){ //saveALLは値をまとめて保存するモデルメソッドだけど('validate' => 'only')にすることで //保存処理を行わずにバリデーションのみを実行することができます //入力データに問題がなかった場合は確認画面を呼び出し $this->render('confirm'); }else{ $this->Session->setFlash('エラーがあります。入力内容をご確認下さい。'); } } } }

    • 締切済み
    • PHP
  • CakePHPのsyntaxエラーについて

    お世話になります。 CakePHPでサイト構成をしています。 教本に従ってコードを書いています。 最も簡単なサイトを作るという章で、MyPagesContorllerを作り、Viewにindex.ctpとedit.ctpを作り、ModelにUser.php、 ContollerにUsersController.phpを作りました。 ユーザーの一覧表示まで出来ましたが、編集機能を作るところでつまずいてます。 UsersController.php <?php class UsersController extends AppController { //モデルの指定(users) public $uses = array('User'); //レイアウトの指定(defaultの場合はなくても動作する) public $layout = 'default'; //indexアクション public function index () { $userData = $this->User->find('all'); //Viewにデータを送る $this->set('userData', $userData); } } //editアクション public function edit($id = null) { if($this->request->isPost() || $this->request->isPut()) { if(!empty($this->data)) { if($this->User->save($this->data)) { $this->Session->setFlash('保存しました'); $this->redirect(array('action' => 'index')); return; } } 下記の様なエラーが表示されてしまいます。 Error: syntax error, unexpected 'public' (T_PUBLIC) 本にある通りに記述して、何度も確認しましたが間違いが見つけられません。 写真に添付しているline20の前後を見ても特にミスは無い様に思えます どこが間違っているのでしょうか。。。 ちなみにeditアクションのソースを消すと、エラーは表示されません。 どなたかご教授頂けないでしょうか。 宜しくお願いいたします。

専門家に質問してみよう