cakephp: ссылка для регистрации на странице регистрации не работает - PullRequest
0 голосов
/ 16 сентября 2011

Я пытаюсь использовать компонент Auth только для просмотра отчета о проделанной работе учащегося.Для всех остальных ссылок аутентификация не требуется.Для дискуссионной доски у меня уже есть отдельный плагин форума.

Когда пользователь нажимает ссылку на отчет о прогрессе на панели навигации, он направляется в / merry_parents / register.Здесь новые пользователи нажимают на ссылку регистрации, а существующие пользователи нажимают на ссылку входа.

Однако моя ссылка для регистрации не работает.Меня не перенаправляют на страницу регистрации, когда я нажимаю на кнопку регистрации.Что я делаю неправильно?любая помощь очень ценится.

Вот мой код:

register.ctp

<?php
    echo $this->Html->link('Sign Up','/merry_parents/signup').' for new user |'.$this->Html->link('Login','/merry_parents/login',array()).' for existing user';
  ?>

merry_parents_controller.php

  <?php
     class MerryParentsController extends AppController{

var $name='MerryParents';
var $components=array('Auth','Session');

function beforeFilter(){
    //$this->Auth->authorize='actions';
    $this->Auth->loginAction=array('controller'=>'merry_parents','action'=>'register');
    //$this->Auth->loginRedirect=array('controller'=>'merry_parents','action'=>'report_card');

}

function register(){

}

function login(){
}

function logout(){
}

function signup(){
    if (!empty($this->data)){
        //$this->Auth->password($this->data['MerryParent']['password2'] used to get what the hashed password2 would look like.
        if ($this->data['MerryParent']['password']==$this->Auth->password($this->data['MerryParent']['password2'])){

                 $merryparent_id=$this->MerryParent->field('id',
                                                array('MerryParent.name'=>$this->data['MerryParent']['name'],
                                                'MerryParent.email'=>$this->data['MerryParent']['email'])
                                                );
                echo $merryparent_id;

                print_r($this->data);
                if ($this->MerryParent->save($this->data))//record with $merryparent_id is updated
                    {
                    $this->Session->setFlash('You will be receiving an email shortly confirming your login and password.');
                    $this->Auth->login($this->data); //automatically logs a user in after registration
                    $this->redirect(array('controller'=>'pages','action'=>'home'));
                    }
                else
                    echo $this->Session->setFlash(__('Your admission could not be saved, please try again!',true));


            }//end if ($this->data['MerryParent']['password']....
            else
                echo $this->Session->setFlash('Typed passwords did not match');
    }//end if (!empty($this->data))
}
}
?>

1 Ответ

1 голос
/ 16 сентября 2011

Вы должны использовать следующий код в вашем MerryParentsController контроллере.

function beforeFilter() {
    $this->Auth->allow('signup');
}

Это позволит вашему методу регистрации получить регистрацию. Для получения дополнительной информации, пожалуйста, прочитайте http://book.cakephp.org/view/1255/AuthComponent-Methods

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...