这是在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的人已经找到了更好的方法来做到这一点。
这似乎是一个奇怪的方法,一个名为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