0

ユーザーを削除できるようにしたいのですが、しようとすると次のエラーがスローされます。「エラー: 要求されたアドレス '/cakephp/users/delete/8?url=users%2Fdelete%2F8' は、このサーバーで見つかりませんでした。」

私の削除機能のコードは

public function delete($id = null)
{
        debug($this->User->delete());
        if (!$this->request->is('get')) 
        {
             throw new MethodNotAllowedException();
        }
        if ($this->User->delete($id)) 
        {
            $this->Session->setFlash('The user with id: ' . $id . ' has been deleted.');
            $this->redirect(array('action' => 'usermanage'));
        }
  }

[NEW] ユーザー モデル コード用のスペースを確保するために、ユーザー管理コードとインデックス コードを削除しました。

<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {

    public $primary_key = 'userID';
    public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A username is required'
            )
        ),

        'password' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A password is required'
            )
        ),
        'name' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Your name is required'
            )
        ),
        'surname' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Your surname is required'
            )
        ),
        'memberType' => array(
            'valid' => array(
                'rule' => array('inList', array('admin', 'responder', 'volunteer')),
                'message' => 'Please enter a valid role',
                'allowEmpty' => false
            )
        ),
        'address1' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Please enter your first line of address'
            )
        ),
        'address2' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'please enter your second line of address'
            )
        ),
        'town' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Please enter your town'
            )
        ),
        'postCode' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'please enter your postcode'
            )
        ),
        'dob' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'please enter your date of birth'
            )
        ),
        'emailAddress' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'please enter your email address'
            )
        ),
        'phoneNumber' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'please enter your phone number'
            )
        ),
        'mobileNumber' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'please enter your mobile number'
            )
        )
    );

    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
    }
}
?>

どんな助けでも大歓迎です!

4

1 に答える 1

2

このエラーは、次の2つの方法で修正できます(ピックアップ1つ)。

1-アクションの削除を次のように変更します。

if (!$this->request->is('post') && !$this->request->is('put')) {
    throw new MethodNotAllowedException();
}

2-postLinkを使用せず、削除アクションを変更します。

<?php echo $this->Html->link('Delete', array('controller' => 'users', 'action' => 'delete', $user['User']['userID'])); ?>

public function delete($id = null) {
        $this->User->id = $id;

        if(!$this->User->exists()) {
            throw new NotFoundException(__('Invalid user'));
        }

        if ($this->User->delete($id)) {
            $this->Session->setFlash('The user with id: ' . $id . ' has been deleted.');
            $this->redirect(array('action' => 'usermanage'));
        }
}

[編集]
primaryKeyの問題の場合:
ユーザーモデルの場合:

public $primary_key = 'userID';

他のモデル(belongsTo、hasMany、hasBelongsToMany)の場合:

public $belongsTo = array(
    'User' => array(
        'className'    => 'User',
        'foreignKey'   => 'userID'
    )
);

英語でごめんなさい、私はブラジル人です。

于 2012-12-21T10:57:03.513 に答える