形成HMVC小部件

时间:2012-04-06 02:11:22

标签: php forms widget hmvc fuelphp

这是在FuelPHP中创建表单小部件的正确方法吗?

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

表单操作调用相同的函数进行处理,但是在哪里重定向到之后?它将如何显示验证错误?

注意:不应通过URL访问窗口小部件;如果直接通过URL访问,表单不应显示自己。

编辑: 在CodeIgniter HMVC and dynamic widgets中发现了类似的问题,但这是从3年前开始的。也许FuelPHP的人找到了更好的方法。

1 个答案:

答案 0 :(得分:0)

这看起来像一个奇怪的方法,一个名为show的方法,但处理显示和操作数据?一个名为“show”(或get,fetch,read等)的方法不应该进行任何编辑,它的名字似乎暗示它是一个只读操作。

但它的收益似乎也是如此。它的读操作只是HMVC,但它的操作操作只是非HMVC?这确实是一种错误的方法来确定该方法应该做什么,不管它是否是HMVC应该没有关于它的作用。

在你的情况下,我将其分为两种方法:一种用于检索(show()),另一种用于操作(例如edit())。您是否只想制作这些HMVC取决于您自己。解决这个问题的方法多于一个,我会选择:

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

或者无法通过在routes.php配置文件中重新路由它然后使用HMVC路由覆盖来路由到该方法,如下所述:https://stackoverflow.com/a/9957367/727225