распечатать имя пользователя при входе - PullRequest
0 голосов
/ 30 ноября 2011

Я использую этот контроллер для входа в систему и выхода из системы, и я хочу отобразить приветственное сообщение и имя пользователя для входа в систему со ссылкой для выхода из системы, проблема заключается в том, что когда я пытаюсь войти в систему, это сообщение появляется для меня

Примечание (8): неопределенная переменная: результаты [APP \ views \ users \ login.ctp, строка 4]

users_controller.php

<?php
# /controllers/users_controller.php
# please note that not all code is shown...
uses('sanitize');
class UsersController extends AppController {
    var $name = 'Users';
    // Include the Email Component so we can send some out :)
    var $components = array('Email','Auth','Recaptcha');
    var $helpers = array('Recaptcha');


// Allow users to access the following action when not logged in
    function beforeFilter () {
        $this->Auth->allow('register','activate','logout','login');
        $this->Auth->autoRedirect = false;
    }


      function login() {

                // Check for incoming login request.
          if ($this->data) {

            // Use the AuthComponent's login action
                if ($this->Auth->login($this->data)) {

                // Retrieve user data
$results = $this->User->find(array('User.username' => $this->data['User']['username']), array('User.active'), null, false);

                // Check to see if the User's account isn't active
                    if ($results['User']['active'] == 0) {
                    // Uh Oh!
                    $this->Session->setFlash('Your account has not been activated yet!');
                        $this->Auth->logout();
                        $this->data['User']['password'] = null;
                   //if not active user
                }else {
     $this->set('users', $results);
     $this->redirect(array('controller' => 'users', 'action' => 'login'));

          }
                        }
                }

        }



        function logout() {
        $this->redirect($this->Auth->logout());
    }

Пользователи / login.ctp

<?php if ($this->Session->read('Auth.User')):?>
<?php
  echo "Welcome".'<br />' ;
echo $results;
echo $html->link('logout', array('action'=>'logout'));
 ?>
<?php else : ?>
<div class="types form">
<?php echo $form->create('User');?>
    <fieldset>
        <legend><?php echo ('Please enter your username and password'); ?></legend>
    <?php
        echo $form->input('username');
        echo $form->input('password');
    ?>
    </fieldset>
<?php echo $form->end(('Login'));?>
</div>
 <?php endif; ?>

Ответы [ 2 ]

0 голосов
/ 02 декабря 2011

AppController.php

function beforeFilter(){
    $this->set('username', $this->_usersUsername());
}

function _usersUsername(){
    $users_username = NULL;
    if($this->Auth->user()){
        $users_username = $this->Auth->user('username');
    }
    return $users_username;
}

view.ctp

<?php if(isset($username)) :?>
hello <?php echo $username; ?>! Welcome back.
<?php endif; ?>
0 голосов
/ 30 ноября 2011

Вы должны передать данные с вашего контроллера в представление, используя метод set: $this->set('results', $results);. Смотри также http://book.cakephp.org/view/977/Controller-Methods#Interacting-with-Views-978

...