无法编辑保存在数据库中的数据

时间:2014-08-25 17:00:31

标签: php mysql cakephp

我正在使用cake php for project,但我无法编辑我保存在数据库中的数据。我在控制器中使用的编辑功能如下所示。

public function edit($id = null) {
    if (!$this->Seller->exists($id)) {
        throw new NotFoundException(__('Invalid seller'));
    }
    if ($this->request->is(array('post', 'put'))) {
        if ($this->Seller->save($this->request->data)) {
            $this->Session->setFlash(__('The seller has been saved.'));
            return $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The seller could not be saved. Please, try again.'));
        }
    } else {
        $options = array('conditions' => array('Seller.' . $this->Seller->primaryKey => $id));
        $this->request->data = $this->Seller->find('first', $options);
    }
}

我的edit.ctp文件如下所示。

<div class="sellers form">
<?php echo $this->Form->create('Seller'); ?>
    <fieldset>
        <legend><?php echo __('Edit Seller'); ?></legend>
    <?php
        echo $this->Form->input('id');
        echo $this->Form->input('first_name');
        echo $this->Form->input('last_name');
        echo $this->Form->input('email');
        echo $this->Form->input('phone_no');
        echo $this->Form->input('address');
        echo $this->Form->input('latitide');
        echo $this->Form->input('longitude');
        echo $this->Form->input('username');
        echo $this->Form->input('password');
        echo $this->Form->input('product_type');
        echo $this->Form->input('product_description');
        echo $this->Form->input('approval');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
<div class="actions">
    <h3><?php echo __('Actions'); ?></h3>
    <ul>

        <li><?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $this->Form->value('Seller.id')), array(), __('Are you sure you want to delete # %s?', $this->Form->value('Seller.id'))); ?></li>
        <li><?php echo $this->Html->link(__('List Sellers'), array('action' => 'index')); ?></li>
    </ul>
</div>

我可以保存和删除数据库中的数据,但是当我编辑保存的数据时,保存的更改不会被保存。请帮我解决一下这个。提前谢谢。

2 个答案:

答案 0 :(得分:0)

你需要这个:

$this->Seller->primaryKey= $id;

就在第一个if之前。

已编辑 - 代码正常运作

public function edit($id = null) {
        $this->Category->id = $id;
        if (!$this->Category->exists()) {
            throw new NotFoundException(__('Invalid category'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->Category->save($this->request->data)) {
                $this->Session->setFlash(__('Catégorie modifiée avec succès'),array('action' => 'index'));
            } else {
            $this->flash(__('Categorie pas modifiée...Réessayer Plus tard'),array('action' => 'index'));
            }
        } else {
            $this->request->data = $this->Category->read(null, $id);
        }
    }

答案 1 :(得分:0)

您能够添加/删除而不是编辑的原因是因为主键未随表单一起提交。 $ id仅在初始页面加载时出现,而不是在提交表单时,因为它依赖于$ this-&gt; request-&gt;数据中的id。检查是否是这种情况的好方法是查看要保存到的数据库表。如果有一个新的插入记录包含您要保存的数据,那就是它。

public function edit($id = null) {
    $this->Seller->id = $id
    if (!$this->Seller->exists($id)) {
        throw new NotFoundException(__('Invalid seller'));
    }
    if ($this->request->is(array('post', 'put'))) {
        if ($this->Seller->save($this->request->data)) {
            $this->Session->setFlash(__('The seller has been saved.'));
            return $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The seller could not be saved. Please, try again.'));
        }
    } else {
        $this->request->data = $this->Seller->read(null, $id);
    }
}

@may是正确的,只是他指的是与您使用的不同的模型名称:它应该是Seller而不是Category

我还会更改您的find()来电使用read()$this->request->data = $this->Seller->read(null, $id);