肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

実行中アクション名とURLに違和感


違和感、というかEthnaの挙動に不満があるのではなく、私の設計のせいなのですが。。

ということで、微妙なタイトルつけちゃいましたが、要するに何がいいたいかといいますと、例えばログイン画面なんか作っているときに、「ログインしていなかったらログイン画面に誘導する」ということをしたい場面が出てくると思います。

ここではログインしていなければ見れない、例えば「action_admin_hoge=true」へアクセスし、そのときに

<?php
...
    function authenticate()
    {
    ...
    return 'login';
    }
...

みたいに、リダイレクトせずにログイン画面に遷移するとします。当然URLには ?action_admin_hoge=true という文字列があるまま、ログイン画面が表示されます。その後、ログインするときにはおそらくフォームの method を POST にすると思うのですが、そのとき

...
<form action="" method="POST">
...
<input type="submit" name="action_login_do" />
...

のように、アクションを空にすると、URLに action_admin_hoge=true を表示させたまま、login_do アクションを呼び出し、login_do では action_admin_index なんかを遷移先に設定したりすると、依然URLには action_admin_hoge と表示されたまま action_admin_index の内容が表示されます。
まぁこれは当たり前なのですが、最初ちょっと、あれ?って思いました(笑)
要するに、POSTとGETの両方で action_* = true しちゃってる状態なんですよね。でも、まぁEthnaはリクエストメソッドのほうの action_* を読むので、無事に action_login_do がアクションとなり、その遷移先が表示されるわけです。

意味不明でしたか?^^;

てかそもそもそんな問題にぶちあたらねーよ!ってカンジですかね。なるべくリダイレクトせずにログイン処理をしたくてこのようにしてたんですが、せめてフォームの action には action="index.php" とかしておくべきですかね(笑)

まぁ結構どうでもいいつぶやきの部類ですよ、これは(笑)