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?这确实是一种错误的方法来确定该方法应该做什么,无论它是否是 HMVC 都不应该暴露它的作用。

在您的情况下,我将其分为两种方法:一种用于检索(show()),另一种用于操作(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 回答