• 締切済み

CakePHP データベースを使わずに

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

みんなの回答

noname#94983
noname#94983
回答No.3

> <?php echo $form->create('コントラーラ名', array('action'=>'entry', 'method'=>'post')))?> > <?php echo $form->end()?> ああ、なるほど。そういうことか。つまりデータベースは使わないが、モデルは使いたい、その他のヘルパーも使いたい、ということなのか。では、モデルクラス内にメンバ変数として、 var $useTable = false; var $_schema = array('id' => array('type' => 'integer')); こんな感じで書いてみる。$_schemaは、ダミーのテーブルスキーマ情報。こいつを取りに行こうとしてデータベースアクセスしてしまうので、あらかじめダミーを与えておけばデータベースを見に行かないはず。あるいは、モデル内で独自にデータを構成してるなら、それにあわせてスキーマ情報を用意してもいいと思う。

nokomo
質問者

お礼

ありがとうございます。 エラーの表示がなくなりました。 知りませんでしたスキーマ情報なるものがあるなんて 勉強します。

noname#94983
noname#94983
回答No.2

となると、$useTable = false;だが……。 さっき、ちょっと試してみたんだが、CakePHP1.2なら、モデルに$useTable = false;を用意しただけで、エラーも出ずにそのままコントローラのindexアクションにアクセスできたぞ? index.ctpも問題なく表示されている。database.phpも作成してない。$useTable = false;だけで特に問題ないようなんだが。 具体的にどういうエラーが出ているのか、またクラスやファイル類は命名規則にしたがってつけられているか、そのへんを確認してみたら。案外、他に原因があるのかもしれない。

nokomo
質問者

補足

度々のご返答ありがとうございます。 index.ctpに <?php echo $form->create('コントラーラ名', array('action'=>'entry', 'method'=>'post')))?> <?php echo $form->end()?> と追加してみて下さい。 Warning (2): mysql_connect() [function.mysql-connect]: ~ Warning (2): mysql_select_db(): supplied argument ~ Warning (2): mysql_get_server_info(): supplied argument ~ といったエラーが表示されます。

noname#94983
noname#94983
回答No.1

コントローラに、 var $uses = null; する。これでモデルを使わなくなる。 (したがって、モデル自体、作らなくていい)

nokomo
質問者

補足

ご返答ありがとうございます。 そうなると、validatesでのチェックができなくなってしまうので モデルを使わないというのは・・・

関連する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のrouteについて

    現在、cakePHPを使って、プログラムを行っているのですが、 その場合単純に'/'とする場合のみ、routeで実行できるのですが、 formからsubmitボタンが押されたとき、route.phpの名前を見て処理を実行させることができません。 formは、 <form action="<?php echo h($html->url('/blog/view')) ?>" method="post" style="margin-bottom:1em"> <p><?php echo $html->input('Task/content') ?> <?php echo $form->submit("TEst", array("action" => "sample", "type" => "post")) ?> </form> として記述しています。 route.phpには、 Router::connect('/blog/:action', array('controller' => 'top', 'action' => 'cake', 'home')); と記述しています。 考え方'/blog/:action'が、blog(コントローラー名)、actionがfunction action名() {} なので、formから、blogコントローラーのviewアクションを実行するように指示を出し、 本来ならその手順に従い画面が表示される。 なのですが、 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 404 と表示される。 この場合の対策はどうすべきなのでしょうか? つまり、formアクションで渡された引数をroute.phpのroute:connect()の指示の通りに実行し、画面を表示させたい。 宜しくお願いします。

    • ベストアンサー
    • 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
  • データーベースをフォームから入力し更新

    データーベースをフォームから入力し更新 登録済のデーターベースをフォームから入力し更新したいのですが、どうしてもうまくいきません。 http://park18.wakwak.com/~little-box/Dreamweaver/sql010.htm のサイトを参考にしているのですがitiran.phpのところからつまづいています。 // 検索した結果を全部表示 echo "<table border=1>"; echo "<tr><td>id</td><td>name</td></tr>"; while($row=mysql_fetch_array($res)){    echo "<tr>";    echo "<td>". $row["name"] . "</td>";    echo "<td>". $row["age"] . "</td>";    echo "<form action=koushin_input.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=更新></td>";    echo "</form>";    echo "<form action=sakujo.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=削除></td>";    echo "</form>";    echo "</tr>"; } echo "</table>"; の辺りがおかしいのではと思っているのですが… アドバイスください。また、他に参考になるサイトがありましたらぜひ教えてください。

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

    先日から、CakePHPを下記のサイトを利用しながら勉強し始めた。 しかし、Form Helperの所でつまずいてしまい、アドバイスを頂きたく質問させて頂きました。 ディレクトリの構成ですが、 MacでMAMPを使用していて、「htdocs」の中に「cake」というフォルダーを作成し、 その中に「app」、「lib」、「plugins」といったcakephpのファイルやフォルダをおいています。 まず、http://libro.tuyano.com/index3?id=743002のレッスンで <form method="post" action="./form" name="form1"> の箇所でエラーが出て <form method="post" action="./sample/form" name="form1"> と修正しエラーを解決しました。 次にhttp://libro.tuyano.com/index3?id=743002&page=3のレッスンで 「samples」というテーブルがないとエラーが出たので「samples」というテーブルを作成しエラーを解決しました。 (レッスンにはテーブル作成に関しては何も書かれていなかったのですが…) つまずいてしまっているレッスンは、http://libro.tuyano.com/index3?id=743002&page=4です。 レッスン通り、作成すると Error: SamplesController could not be found. Error: Create the class SamplesController below in file: app/Controller/SamplesController.php の2つのエラーがでます。 index.ctpの$this->Form->create(null,array('type'=>'post','action'=>'.'));で 自分自身に飛ばすようになっていると思うのですがデバックしたページのソースをみると <form action="/cake/samples/." id="SampleForm" method="post" accept-charset="utf-8"> と「samples」と見覚えないフォルダーに飛んでいます。この箇所が問題ではと考えています。 色々と試してみたのですが、分からず困っています。 アドバイスよろしくお願いします。

    • 締切済み
    • PHP
  • cakePHP サブミット方法について

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

    • ベストアンサー
    • PHP
  • cakephpのバリデーションについて。

    cakephpのバリデーションについて。 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 mysql:5.1.41 書籍を読みながらcakephpを始めました。 現在 フォームで入力された項目に該当する データをmysqlのデータベースで検索後、 結果をビューに表示するものを作っています。 フォームヘルパーを使用し、inputされたデータを コントローラ側で受け、その値をモデルで検索後 ビューへ渡しています。 このようなデータベースに保存は行わない検索だけの場合 フォームに入力されたデータをcakePHPのバリデーション機能 を利用してチェックできるのでしょうか? ビューでは $form->input('form.text1'array('label'=>'検索対象1')); $form->input('form.text2'array('label'=>'検索対象2')); としています。 このform.text1とform.text2について未入力の場合など エラーチェックが行いたいです。 そもそもこのような場合のエラーチェックは コントローラーに処理を記述しバリデーションは利用しないのかなど、 どなたかアドバイスいただけると助かります。

    • ベストアンサー
    • PHP
  • お問合せフォームのセキュリティについて

    PHP初心者です。 ようやく簡単なお問合せフォームを作る事ができました。 ですがセキュリティの面で不安がありませすので、ご質問させていただきます。 1. contact.html(入力フォームを表示) <form action="kakunin.php" method="post"> method="POST"で kakunin.php に値を渡してます。 2. kakunin.php(入力内容の確認やエラーを表示) $_SERVER["REQUEST_METHOD"] == "POST"でフォームの値を取得して、 input type="hidden"を使用して値を受け渡してます。 入力内容表示のフォームは <form method="POST" action="mail.php"> この時フォームでの表示は <td><?php echo $name ?></td> としているのですが、 これを、 <td><?php echo htmlspecialchars($name) ?></td> にした方がいいのでしょうか? 3 mail.php(入力内容をメールで送信) $_SERVER["REQUEST_METHOD"] == "POST"でフォームの値を取得して、 mb_send_mailで送信しています。 このようにして、フォームを作りましたが、 セキュリティの観点から見て注意しなければならない事は何でしょうか? 作り方に問題ありでしょうか? 駄文で失礼します。宜しくお願い致します。

    • 締切済み
    • PHP
  • 複数フォームについて

    こんばんは。 いま行き詰ってます(汗) 早速質問なんですが、三つのフォームを用意します。 <FORM method="POST" action=<?echo"xxx.php?1"?>> <INPUT type="submit" value="A" </FORM> <FORM method="POST" action=<?echo"xxx.php?2"?>> <INPUT type="submit" value="B" </FORM> <FORM method="POST" action=<?echo"xxx.php?3"?>> <INPUT type="submit" value="C" </FORM> 上記のHTMLを実行。 [A][B][C] Aを押すとxxx.php?1 Bを押すとxxx.php?2 Cを押すとxxx.php?2 と別々のアクションに行くはずだと思ったんですが.。 常にxxxx.php?1です(笑) これを、ABCそれぞれのボタンにアクションをつけたいんですが、 可能ですか?? ご教授お願い致します!!!

  • 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