CakePHP 1.3について

このQ&Aのポイント
  • 初心者のためにCakePHP 1.3の使い方を教えてください。
  • Views-userdetail-index.ctpとuserdetail_controllerのコードを記述しているが、$form->textareaでの値の受け渡しがうまくいかない。
  • User.remarksをUserdetailに変更しても同様の問題が発生している。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

意図することが、テーブル名 users の編集や表示をおこなうWebアプリと仮定します。 モデル名 User, ファイル名 models/users.php コントローラ名 Users, ファイル名 controllers/users_controller.php ビュー名 users, ディレクトリ名 views/users 一覧ビューファイル名 index.php 編集ビューファイル名 edit.php 追加ビューファイル名 add.php 詳細ビューファイル名 view.php とするなら、 編集ビュー views/users/edit.php において以下のように記述 echo $form->create('User', array('type' => 'get')); echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); echo $this->Form->end('SUBMIT'); コントローラ controllers/users_controller.php においてedit部は以下のように記述 function edit($id = null) { if (!empty($this->data)) { // 入力有りなら保存処理 $this->User->save($this->data); } $this->set('user',$this->User->find('first', array('conditions' => array('User.id' => $id) ))); } てな感じでしょうか。まあこれがそっくりそのままで動くかどうかはさておき、 初心者であればcake付属のbakeツールをまず使って見ることをお勧めします。 cake付属のbakeツールを使えば、モデルにもとづいた一覧、表示、追加、編集、削除の処理がまとめて出来上がります。 それをカスタマイズしたり部分的にコピーしたり処理を追加したりしていけばだんだん応用的なことが出来るようになるでしょう。

参考URL:
http://book.cakephp.org/1.3/ja/view/1522/Bake-%E3%81%A7%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B
kotaete12
質問者

お礼

適切な回答をありがとうございます。 honoka-chaさんの回答を参考に、開発を進める事ができました。 開発で忙しかったために、お礼が遅くなりました。 申し訳ございません。

関連するQ&A

  • cakePHPでFormを使用したDBへの登録

    cakePHP初心者です。 ブラウザで入力画面→確認画面→完了画面と遷移して、 DBに入力した値を登録する基本の動きをさせたいのですが、 Controllerの動きが分かりません。 Viewのファイルを 入力画面:entry.ctp 確認画面:confirm.ctp 完了画面:complete.ctp とします。 1.SampleControllerからentryページを表示 public function entry(){ } 2.etntry.ctpでFormを作成 <?php echo $this->Form->create('Sample', array('action' => 'confirm')) . PHP_EOL; ?> 3.SampleControllerでconfirmメソッドが呼ばれる public function confirm(){ if($this->request->is('post')){ データを画面にセット? } } 4.confirm.ctpが表示され、登録ボタンを押すと完了画面にFormを作成 <?php echo $this->Form->create('Sample', array('action' => 'complete')) . PHP_EOL; ?> 5.SampleControllerでcompleteメソッドが呼ばれる public function confirm(){ if($this->request->is('post')){ バリデーションチェック後、DBに登録? } } この流れでよいのでしょうか。 完了画面のcompleteでバリデーションチェックを行うことに違和感を感じています。 仮にconfirmで実施するとしても、書き方が良く分かりません。 <?php echo $this->Form->create('Sample', array('action' => 'confirm')) . PHP_EOL; ?> と書いたら、3の処理とかぶってしまいますよね・・・? 説明分かりにくくてすみません・・・。 ネットで調べつつやっていたのですが、一連の流れをすべて書いたサイトに見当たらず、 途方に暮れています。 どなたかご教示お願いします。

    • 締切済み
    • PHP
  • CakePHP データベースを使わずに

    PHP 5.2.6 CakePHP 1.2 データベースを使わずにフォームを作成する場合 <?php echo $form->create('Contact', array('action'=>'entry', 'method'=>'post')))?> と記述するとデータベースに接続しようと、してしましす。 もちろんモデル側では、 var $useTable = false; としてるのですが、どのようにしたらよいのでしょうか? よろしくお願いいたします。

  • 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アクションのソースを消すと、エラーは表示されません。 どなたかご教授頂けないでしょうか。 宜しくお願いいたします。

  • CakePHP2で複数のフォームを扱う方法

    1つのページで複数のフォームがある場合、 送られたきたフォームごとに、別々のプログラムを動かしたいのですが、 ifで分岐する場合に、条件となる適切なパラメータはありますか? View <div id="a"> <?php echo $this->Form->create('Test'); echo $this->Form->input('list_a'); echo $this->Form->input('list_b'); echo $this->Form->input('list_c'); echo $this->Form->end(); ?> </div> <div id="b"> <?php echo $this->Form->create('Test'); echo $this->Form->input('list_d'); echo $this->Form->input('list_e'); echo $this->Form->input('list_f'); echo $this->Form->end(); ?> </div>

    • ベストアンサー
    • PHP
  • CakePHPでのコメント数表示について

    CakePHPを使って簡単な掲示板を開発しているのですが、トップページに 各トピックについたコメント数を表示させる方法で壁にぶち当たってしまっております。 データの取り出し方及び表示方法について教えて頂ければと思います。 DB構造(モデル)としては、 ==================================== ■掲示板(post.php) テーブル:posts id title contents ■コメント(comment.php) テーブル:comments id post_id comment ==================================== となっており、postsにhasMany、commentsにbelongsToで アソシエーションを貼ってあります。 コントローラー(posts_controller.php)では、 ==================================== $data = $this->Post->find('all',array('order' => array('Post.id' => 'desc'))); $this->set('data',$data); ==================================== という処理を行い、 ビュー(/posts/index.ctp)では、 ==================================== foreach($data as $val){ echo "<tr>"; echo "<td><a href='{$val['Post']['id']}'>$val['Post']['title']</a></td>"; echo "</tr>"; } ==================================== としています。 これで、トップページに行くと掲示板トピックスのタイトルの 一覧は表示できるのですが、その横についたコメント数を表示 させたいのです。 例)掲示板のタイトルです(13) 上記のように(○)とさせたいのです。 コントローラーの所でallではなくcountにすることで件数を取りだす ことができる所まではできるのですが、 $cnt = $this->Post->find('count',array('order' => array('Post.id' => 'desc'))); などとやっても本来取り出したいcommentsではなくpostsの件数を取りだす ことになってしまっています。 また、hasManyを利用すると、 Array( [0] => Array( [post] => Array( [id] => 1 [title] => 掲示板のタイトルです [contents] => 掲示板の内容です [comment] => Array( [0] => Array( [id] => 1 [post_id] => 1 [comment] => コメント1です。 [1] => Array( [id] => 2 [post_id] => 1 [comment] => コメント2です。 ・ ・ ・ となる為、ビューでの表示のさせ方にも困っております。

    • ベストアンサー
    • PHP
  • 実装可能できますか?

    cakephpでの実装です。 あるボタンを押したときに データを検索しその戻りが0行の時は アラートを出して処理を終了し、 もしデータがあった場合はダイアログを 表示しcsvファイルとして出力したいのですが 0行の時アラートが出現するのですが真っ白な画面に 遷移してしまいます。 データがあったときはダイアログがでてそのまま 保存できるのですが…。 ctpファイルにて <?php echo $form->create("tests", array("controller" => "tests", "action" => "csvdownload", "id" => "")); ?> でControllerのcsvdownload関数を呼び出しています。

    • ベストアンサー
    • 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 サブミット方法について

    cakePHPについて、質問があります。 以下のように、サブミット時にPHPの関数を呼び出そうとしましたが、呼び出しを行えません。 echo $form->submit('登録', array('id'=>'XX','controller' => 'controller名', 'action' => 'action名' )); お手数ですが、解決方法を教えて頂けますでしょうか? 以上です。

    • ベストアンサー
    • 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 findByについて

    CakePHPを勉強中です。 データベースからのデータ取得が出来ないのでご教授ください。 $test=$this->User->findCount(); の場合、きちんとカウントを取得できているのですが $test=$this->User->find('All'); の場合 何も帰ってこない(empty)になってしまいます。 MySQL 照合順序:utf8_general_ci cakephp-1.2.10 何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう