アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、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()の指示の通りに実行し、画面を表示させたい。

宜しくお願いします。

A 回答 (2件)

なにかいろいろ間違っているような気がします。


> Router::connect('/blog/:action', array('controller' => 'top', 'action' => 'cake', 'home'));
これで/blog/viewとしたら、topコントローラのviewアクションが呼ばれますが、意図したとおりですか?引数がhomeなのでしょうか。
$form->submit にもなぞのアクションが指定されてます。普通にsubmitボタンを表示してみては?

この回答への補足

回答ありがとうございます。
> Router::connect('/blog/:action', array('controller' => 'top', 'action' => 'view', 'home'));
これで/blog/viewとしたら、topコントローラのviewアクションが呼ばれますが、意図したとおりですか?
はい。その通りです。
>引数がhomeなのでしょうか。
今は、引数なしで設定しています。
一度のぞいて実行してみました。

>$form->submit にもなぞのアクションが指定されてます。普通にsubmitボタンを表示してみては?
一度、
<form action="<?php echo h($html->url('/blog/cake')) ?>" method="post" style="margin-bottom:1em">
<input type="submit" value="TEST">
</form>
に変更して実行してみました。
結果は変わりませんでした。
url('blog/')とすると、blog/index.phpが実行されるのですが、
本来url('blog/cake')とすると、blog_controller.phpのcakeアクションが実行されるのでしょうか?

動作しないので、ためしに
($html->url('/blog/)) 、
Router::connect('/blog/', array('controller' => 'top', 'action' => 'view', 'home'));
とした場合、
view.phpが実行されます。
index.phpを実行するのなら、簡単にできるのですが。。
blog/index.phpを実行するのなら、簡単に行えるのですが。

>なにかいろいろ間違っているような気がします。
どういったところなのでしょうか?

宜しくお願いします。

補足日時:2009/09/19 20:41
    • good
    • 0

そうしたら、routeは合ってるのかな。


だとすると、 top_controller.php にaction(view or cake?)がちゃんと書かれていないか、そのテンプレートが無いとか。
    • good
    • 0
この回答へのお礼

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

どうやら、bootstrap.phpに、controller、viewのフォルダの指定がなかったことが原因で動作しなかったようです。

ありがとうございました。
今後ともよろしくお願いします。

お礼日時:2009/09/22 20:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!