Добавить пользователя в учебник по аутентификации Cakephp - PullRequest
0 голосов
/ 09 декабря 2011

При написании функции add () для UsersController возникает проблема.

    public function add(){
        if ($this->request->is('post')) {
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash('The new user has been saved.');
                $this->redirect(array('action' => 'test'));
            }
        }
        $this->set('title_for_layout', 'Register');
    }

Это дополнительный вид ctp.

    <?php
    echo $this->Form->create('User');
    echo $this->Form->input('username');
    echo $this->Form->input('password');
    echo $this->Form->end('Save User');
    ?>

При попытке доступа к пользователям / добавления всегда возникает внутренняя ошибка. Кто-нибудь знает, как бороться с этой проблемой? Спасибо.

1 Ответ

1 голос
/ 09 декабря 2011

Вы пробовали тестировать $this->data вместо $this->request->is('post')?Это может не иметь значения, но обычно это так.

Кроме того, для сохранения вам, скорее всего, следует (если вы не устанавливаете userid вручную) сделать что-то вроде:

$this->User->create();
$this->User->save($this->data);

Таким образом, ваша функция добавления должна выглядеть примерно так:

public function add(){
        if ($this->data) {
            $this->User->create();
            if ($this->User->save($this->data)) {
                $this->Session->setFlash('The new user has been saved.');
                $this->redirect(array('action' => 'test'));
            }
        }
        $this->set('title_for_layout', 'Register');
    }

И вы, вероятно, хотите, чтобы ваш вид был примерно таким:

<?php echo $form->create('User', array('action' => 'add')); ?>
<?php echo $form->input("username", array('label' => 'Username'))   ?>
<?php echo $form->input("password",array("type"=>"password", 'label' => 'password')) ?>
<?php echo $form->submit('Submit'); ?>
...