0

これは、FuelPHP でフォーム ウィジェットを作成する正しい方法ですか?

class Controller_Widget extends Controller
{
    public function action_show()
    {
        if (Request::is_hmvc())
        {
            // show form widget
        }
        else
        {
            // process form
        }
    }
}

フォーム アクションは同じ関数を呼び出して処理しますが、その後どこにリダイレクトするのでしょうか? 検証エラーはどのように表示されますか?

注: URL からウィジェットにアクセスできないようにする必要があります。URL から直接アクセスした場合、フォーム自体は表示されません。

編集: CodeIgniter HMVC と動的ウィジェットで同様の問題が見つかりましたが、これは 3 年前のものです。たぶん、FuelPHP の連中がこれを行うためのより良い方法を見つけたのでしょう。

4

1 に答える 1

0

これは奇妙なメソッドのように思えます。show と呼ばれるメソッドですが、データの表示と操作の両方を処理しますか? 「show」(または get、fetch、read など) と呼ばれるメソッドは、編集を行うべきではありません。その名前は、それが読み取り専用操作であることを明確に暗示しているようです。

しかし、それがどのように進行するかもオフのようです。読み取り操作は HMVC のみですが、操作操作は非 HMVC のみですか? メソッドが何をすべきかを判断するのは本当に間違った方法です。

あなたの場合、これを 2 つのメソッドに分割します。1 つは検索用 ( show()) で、もう 1 つは操作用 (edit()たとえば) です。これらの HMVC のみを作成するかどうかは、あなた次第です。それを解決する方法は複数ありますが、私は次のようにします。

if ( ! Request::is_hmvc()) { throw new Exception('Only HMVC access allowed.'); }

または、routes.php 構成ファイルでメソッドを再ルーティングし、次に説明するように HMVC ルーティングの上書きを使用して、メソッドにルーティングできないようにします: https://stackoverflow.com/a/9957367/727225

于 2012-04-08T21:28:48.933 に答える