• 締切済み

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」と見覚えないフォルダーに飛んでいます。この箇所が問題ではと考えています。 色々と試してみたのですが、分からず困っています。 アドバイスよろしくお願いします。

  • yuu789
  • お礼率8% (153/1886)
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

noname#161640
noname#161640
回答No.1

リンク先のサンプルを試したわけではないのですが……。以前、CakePHP 1.3あたりの頃に、actionの指定を相対アドレスにした場合、そのページヘのアクセスで最後のスラッシュを省略すると生成されるアドレスが1階層ずれる、という現象に遭遇うしたことがあります。 つまり、こういうことです。 http://localhost/cake/sample/ ←OK http://localhost/cake/sample ←ダメ リンク先の記事は2.0のようなので違うかも知れませんが……。相対アドレスがクサイ気がします。とりあえず、action'=>'.'ではなくて、アクション名(action'=>'index'とか)を指定してみてはどうでしょうか。

関連するQ&A

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

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

  • cakephpよりLaravel5の方が良いでしょ

    これから投稿型のWEBサービスを作りたいなら、cakephpよりLaravel5.2でしょうか? こちらなら新しくて問題ないでしょうか? http://laraweb.net/crud/ こちらの方がもっと新しいですか? http://libro.tuyano.com/index2?id=3766003 フリーランスで仕事を請けることも考えています また、これらフレームワークと、ライブラリの違いがいまいちわからないのですがフレームワークとはプラグインのように使える設定だけすればもう完成でき、セキュリティ面も初めから出来上がっているので、設置するだけで投稿サイトがセキュアに出来上がってしまうものなのでしょうか?

    • ベストアンサー
    • PHP
  • cakePHP Controller.php

    http://libro.tuyano.com/index3?id=738001&page=3 のページの比較的、上の方をやっているのですが SampleController.phpのフォルダを作る ↓ SampleController.phpの中にindexという拡張子なしのデータを作る 手順としてはそれで合っているのでしょうか? (試しては見たのですが上手く行かなくて...)

  • 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
  • IISでcakePHP

    現在IIS上でcakePHPを利用してPHPのwebアプリを作成しています。 事情によりrewriteは行わずに作成しているのですが、 URLを指定すると404エラーが返ってきます。 URLは以下です。 http://localhost/test/index.php/posts/index cakePHPはinetpub/wwwroot/test/直下に配置しています。 http://localhost/test/index.php の画面は見れています。 IISでrewriteをせずcakePHPの画面が見れる方法をご存知の方がいましたらご教授願います。 ●環境 windows XP Professional sp3 IIS 5.1 PHP 5.3.5 CakePHP 2.2.2

    • ベストアンサー
    • PHP
  • phpについて 入力ホーム

    ホームページ php 入力ホームについて 初心者です。 HTML内に入力ホームに関するphpページを指定したいのですが <form action="form1.php" method="post">は指定できましたが、もう一つ<form action="form3.php" method="post">も指定したいくて、下のコードを書き込んだのですが、 <form action="form1.php" method="post"> <form action="form3.php" method="post"> 以下のようなエラーメッセージが出ます タグ<form>内に< form>を含むことができません。 どうしたら良いでしょうか?

    • 締切済み
    • PHP
  • [CakePHP]複数テーブルのアソシエーション

    CakePHPについて質問です(Ver.2.2)複数テーブルのアソシエーションについてなのですが、下記のようなアソシエーションは可能でしょうか? [使用テーブル] Post、Recommend、UserMaster、UserDetail [結合キー] (1)Post.id = Recommend.post_id (2)User.id = Post.user_id (3)User.id = UserDetail.user_id つまり、Post.php内にてPost以外で紐づいているテーブル同士を結合が可能かどうかを知りたいです。((1)(2)はPostテーブルと紐づいているが、(3)はPostテーブル以外同士で紐づいている) 下記方法にて(1)(2)は実現できたのですが、(3)の方法が見つかりませんでした。 -- class Post extends AppModel { $belongsTo = array('User'); $hasOne = array('Recommend'); (略) -- 不明点あればご説明します。どうぞよろしくお願いします。

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

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

    • ベストアンサー
    • PHP
  • cakephpの命名規則について

    cakephp初心者です。 cakephpはテーブル名、モデル名、コントローラ名、ビュー名、が規則によって付けられますが、 複数人で開発する場合、 同じテーブルを参照しようとすると、同じ名前のビューフォルダなどが出来てしまうのではないですか? テーブル名:users モデル名:User コントローラ名:UsersController ビューフォルダ:Users   ビューファイル:index.ctp usersテーブルを参照する場合、みんな同じコントローラ名、そして、ビューフォルダ名になると思うのですが、 どうやって別々のページを作っていくのですか? 上手く質問出来ていませんし、勉強不足だとは承知しています。 どうしてもCakePHPに苦戦しています。 開発の進め方を出来るだけ分かりやすく説明して頂けると嬉しいです。

    • ベストアンサー
    • PHP

専門家に質問してみよう