这是在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的人找到了更好的方法。
答案 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