让我们说例如我正在创建一个在线商店。我有一个名为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;
}
这是处理此问题的最佳方法吗?还是应该将其传递给另一个函数?
答案 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();
}