我想通过在模型中使用数据库操作和在控制器中使用逻辑部分来分离数据库功能和逻辑部分。之前我在控制器本身的操作部分中有所有代码。我尝试了一些东西,但它不起作用。
这就是我之前的情况:
/* Controller */
function insertFormName(){
$formname=$_POST['formname'];
$ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1");
$newid=$ret[0]['forms']['id'];
$this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid));
}
现在我改变了一点,这不起作用:
/* Controller */
function insertformname()
{
$this->data['Form']['formname']=$this->params['form']['formname'];
$this->Form->save($this->data);
$this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid));
}
/* Model */
function save($data)
{
$ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1");
$newid=$ret[0]['forms']['id'];
$this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid));
return $newid;
}
编辑:
我已经尝试了另一种方式..在模型中拥有整个功能,只需从控制器调用该功能。这种方法是否正确?
/* Model */
function saveFormName($data)
{
$this->formname=$data[$this->name]['formname'];
$ret = $this->Form->query("Select id from forms order by id DESC LIMIT 1");
$newid=$ret[0]['forms']['id'];
$this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid));
}
/* controller */
function insertformname()
{
$this->data['Form']['formname']=$this->params['form']['formname'];
$this->Form->saveFormName($this->data);
}
答案 0 :(得分:3)
看起来你应该重温蛋糕书(book.cakephp.org)并重做课程。如果您正确设置表单,则不必手动将$ _POST ['formname']分配给$ this->数据。尝试将表单中的字段名称(在HTML中)设置为数据[ModelName] [FieldName]。
下一步:
$this->Form->updateAll(array('Form.name' => "'$formname'"),array('Form.id' => $newid));
为什么在保存数据后立即更新数据? $ newid和$ formname变量来自哪里?您可以在Model :: save中定义它们,但不能在控制器中定义。
这似乎是你试图与Cake自动化的东西打架太多了。也许你应该重新提出你的问题,但请详细说明你的高级别描述,而不仅仅是“为什么这不起作用?”在我看来,这可以简化一下,但是,我再也不确定你的目标是什么。
尊敬, 特拉维斯