2014-09-15 3 views
1

Я борюсь с CakePHP, пытаясь создать базовую функциональность входа. Пока что CakePHP выигрывает. Я следил за базовым учебным пособием по блогам и основывался на том, что я пытаюсь создать similair login thingy.CakePHP - основная функция входа в систему не работает

Единственное различие, которое у меня есть, это то, что я не использую модель «Пользователи», а пользовательскую модель Employers, и я использую адрес электронной почты/пароль вместо имени пользователя/пароля.

Но все, что я получаю, это «Ваше имя пользователя или пароль были неверными».

AppController.php

App::uses('Controller', 'Controller'); 

class AppController extends Controller { 

    public $components = array(
     'Session', 
     'Auth' => array(
      'loginRedirect' => array(
       'controller' => 'schedules', 
       'action' => 'index' 
      ), 
      'logoutRedirect' => array(
       'controller' => 'employers', 
       'action' => 'login', 
       'home' 
      ), 
      'authenticate' => array(
       'Form' => array(
        'fields' => array(
         'username' => 'email', 
         'password' => 'password' 
        ), 
        'userModel' => 'Employer', 
        'passwordHasher' => 'Blowfish' 
       ) 
      ) 
     ) 
    ); 
} 

EmployersController.php

<?php 
App::uses('AppController', 'Controller'); 
class EmployersController extends AppController { 

public $helpers = array('Form'); 

public function beforeFilter() 
{ 
    parent::beforeFilter(); 

    $this->Auth->allow('login'); 
} 

public function login() 
{ 
    $layout = 'login'; 
    $this->layout = $layout; 

    if($this->request->is('post')) 
    { 
     debug($this->Auth->login()); 
     if($this->Auth->login()) 
     { 
      return $this->redirect($this->Auth->redirect()); 
     } 
     else 
     { 
      $this->Session->setFlash('Your username or password was incorrect.'); 
     } 

     debug($this->request->data['Employers']['password']); 
    } 
} 
} 

Login.ctp

<div id="login-container"> 
<h1>Login</h1> 
<?php 
    echo $this->Form->create('Employers'); 
    echo $this->Form->input('email', array('label' => false, 'placeholder' => 'Email')); 
    echo $this->Form->input('password', array('label' => false, 'placeholder' => 'Password')); 
    echo $this->Form->submit(); 
    echo $this->Form->end(); 
?> 

Когда я отлаживаю данные $ this-> request->, данные структурированы как данные [«Работодатели»] ['email'] & данные [«Работодатели»] ['password']. Это возможно не правильно, так как моя модель называется Employer.

Это правильно, и функция входа в систему ломается, и если да, то как я могу это исправить?
Или есть что-то еще, что я просматриваю.

ответ

2

В вашем login.ctp,

Это должно быть echo $this->Form->create('Employer'); не с с, так что удалить с и попробовать.

Надеюсь, это поможет.

+0

Хм, это действительно сработало. Я думал, что мне нужно использовать имя контроллера, а не модель. Мой плохой, спасибо – DijkeMark

+0

Нет проблем. благодаря –

Смежные вопросы