无法通过 CakePHP 表单更新数据库中的数据
unable to update data in database through CakePHP form
我写了一个编辑功能来更新新闻的信息,我的代码:
这是控制器文件函数:
public function editnews($id) {
$this->layout = "news"; //tynemc call by this statement
$this->loadModel('News'); //model call
$this->loadModel('Category'); //load news category
if ($this->request->is('post')) {
if (move_uploaded_file($this->request->data['News']['image_url']['tmp_name'], WWW_ROOT . 'media/'. $this->request->data['News']['image_url']['name'])) {
$this->request->data['News']['image_url'] = time() . $this->request->data['News']['image_url']['name'];
}$this->News->save($this->request->data['News']);//data save by this statement
$msg = '<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong> News update successfully </strong>
</div>';
$this->Session-> setFlash($msg);
return $this->redirect('editnews');
}
if (!$this->request->data) { // id wise data search
$data = $this->News->findById($id);
$this->request->data = $data;
}
$this->set('categories', $this->Category->find("list"));//categories load in dropdown
}
这是 ctp 文件表单操作代码:
<?php echo $this->Form->create('News', array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'id' => 'form-validate',
'class' => 'form-horizontal',
'novalidate' => 'novalidate',
'enctype' => 'multipart/form-data',
'controller' => 'admins',
'action' => 'editnews'
)
);
?>
我没有编辑标题、图片、新闻详情,我无法保存新闻信息,为什么会这样,我该如何更正我的编辑记录功能?
您应该尝试稍微调试一下您的代码:
试试var_dumpmove_uploaded_file看看有什么returns。
还有var_dump $this->request->data['News'] 请把结果放在这里,因为你发送的数据,它可能不会保存。如果您的模型 ID 未设置,CakePHP 将不知道要保存/编辑什么。
如果你不能var_dump,你可以使用$this->log($myVar, 'debug'),然后在app/tmp/logs/debug.log[=中查看你的文件10=]
另一方面,通常最好将 HTML 放在视图中,而不是控制器中(但这更多是为了您的个人知识)
我认为您面临表单操作问题。尝试执行此代码。
<?php
echo $this->Form->create("News",array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'url' => array(
'controller' => 'admins',
'action' =>'editnews'
),
'id' => 'form-validate',
'class' => 'form-horizontal',
'novalidate' => 'novalidate',
'enctype' => 'multipart/form-data'
)
);
?>
并尝试将此代码作为函数。
public function editnews($newsid = null) {
$this->layout = "news";
$this->loadModel('News');
$this->loadModel('Category');
$this->News->id = $newsid;
if ($this->request->is('get')) {
$this->request->data = $this->News->read();
}
else {
$data = $this->request->data;
}
if ($this->News->save($data)) {
$this->Session->setFlash("Newsletter angelegt");
$msg = '<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong> News update successfully </strong>
</div>';
$this->Session->setFlash($msg);
$this->redirect(array( 'controller' => "admins", "action" => "manage_newses"));
}
else
{
$this->Session->setFlash("not updated");
$this->render();
}
}
if (!$this->request->data) {
$data = $this->News->findById($id);
$this->request->data = $data;
}
$this->set('categories', $this->Category->find("list"));}
我写了一个编辑功能来更新新闻的信息,我的代码:
这是控制器文件函数:
public function editnews($id) {
$this->layout = "news"; //tynemc call by this statement
$this->loadModel('News'); //model call
$this->loadModel('Category'); //load news category
if ($this->request->is('post')) {
if (move_uploaded_file($this->request->data['News']['image_url']['tmp_name'], WWW_ROOT . 'media/'. $this->request->data['News']['image_url']['name'])) {
$this->request->data['News']['image_url'] = time() . $this->request->data['News']['image_url']['name'];
}$this->News->save($this->request->data['News']);//data save by this statement
$msg = '<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong> News update successfully </strong>
</div>';
$this->Session-> setFlash($msg);
return $this->redirect('editnews');
}
if (!$this->request->data) { // id wise data search
$data = $this->News->findById($id);
$this->request->data = $data;
}
$this->set('categories', $this->Category->find("list"));//categories load in dropdown
}
这是 ctp 文件表单操作代码:
<?php echo $this->Form->create('News', array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'id' => 'form-validate',
'class' => 'form-horizontal',
'novalidate' => 'novalidate',
'enctype' => 'multipart/form-data',
'controller' => 'admins',
'action' => 'editnews'
)
);
?>
我没有编辑标题、图片、新闻详情,我无法保存新闻信息,为什么会这样,我该如何更正我的编辑记录功能?
您应该尝试稍微调试一下您的代码:
试试var_dumpmove_uploaded_file看看有什么returns。
还有var_dump $this->request->data['News'] 请把结果放在这里,因为你发送的数据,它可能不会保存。如果您的模型 ID 未设置,CakePHP 将不知道要保存/编辑什么。
如果你不能var_dump,你可以使用$this->log($myVar, 'debug'),然后在app/tmp/logs/debug.log[=中查看你的文件10=]
另一方面,通常最好将 HTML 放在视图中,而不是控制器中(但这更多是为了您的个人知识)
我认为您面临表单操作问题。尝试执行此代码。
<?php
echo $this->Form->create("News",array(
'inputDefaults' => array(
'label' => false,
'div' => false
),
'url' => array(
'controller' => 'admins',
'action' =>'editnews'
),
'id' => 'form-validate',
'class' => 'form-horizontal',
'novalidate' => 'novalidate',
'enctype' => 'multipart/form-data'
)
);
?>
并尝试将此代码作为函数。
public function editnews($newsid = null) {
$this->layout = "news";
$this->loadModel('News');
$this->loadModel('Category');
$this->News->id = $newsid;
if ($this->request->is('get')) {
$this->request->data = $this->News->read();
}
else {
$data = $this->request->data;
}
if ($this->News->save($data)) {
$this->Session->setFlash("Newsletter angelegt");
$msg = '<div class="alert alert-success">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong> News update successfully </strong>
</div>';
$this->Session->setFlash($msg);
$this->redirect(array( 'controller' => "admins", "action" => "manage_newses"));
}
else
{
$this->Session->setFlash("not updated");
$this->render();
}
}
if (!$this->request->data) {
$data = $this->News->findById($id);
$this->request->data = $data;
}
$this->set('categories', $this->Category->find("list"));}