处理控制器中表单提交的最佳实践

时间:2011-05-02 20:19:43

标签: php model-view-controller forms controllers

让我们说例如我正在创建一个在线商店。我有一个名为products的控制器,在该控制器中我有一个名为create_product的函数。 Create_product调用一个视图,该视图显示用户可以将新产品输入数据库的表单。

当用户填写表单以创建产品时,我应该将操作发送回create_product控制器并使用IF语句处理它吗?或卸载到另一个功能?

实施例

<form method="post" action="www.example.dev/products/create_product/add"> 
//the above form would post back to the original controller

function create_product()
{
    if(uri->segment(3) == "add")
    {
        //call a model to do all the database stuff
    }

    load->view->create_product_form;
}

这是处理此问题的最佳方法吗?还是应该将其传递给另一个函数?

3 个答案:

答案 0 :(得分:1)

我(个人)将有一个函数来设置表单参数并使用该表单“启动”视图,另一个函数用于验证和调用模型以将该表单的值放入数据库中。我相信这真的取决于你,但是如果你根据实际操作分配控制器的几个功能,代码会更清晰。

答案 1 :(得分:1)

不要在一个函数中使用URI段来填充大量内容来过滤它。 createProduct()可以列出可用于创建的产品(我假设采用CRUD格式),并且表单的提交应该使用POSTed数据ping另一个控制器。也许是insertProduct(),其中数据被清理并发送到模型以插入数据库。

关注点分离!保持函数尽可能分开,并为函数名称提供良好的描述符。

答案 2 :(得分:0)

我喜欢symfony处理表格和方式的方式。表格提交。它是一个功能(动作)

简化代码:

executeCreate() {
$this->form = new Form()
if($r->isMethod('POST')) {
    //handle submission
    bind();
    save();
}
相关问题