[ZF2] Quand les services sont là
Bonjour,
Je débute en ZF2 et certaines notions me sont encore un peu flou, J'ai effectué le tutoriel album en entier, je me suis donc lancer à présent dans la gestion des ACL.
J'ai utiliser ces tuto là :
Malheureusement je suis tombé sur quelques problèmes quand j'ai essayé de l'adapter au squelette de base, plus précisément au niveau des services ... dans le module User j'ai cette configuration :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public function getServiceConfig()
{
return array(
'factories' => array(
'User\Model\UserTable' => function($sm) {
$tableGateway = $sm->get('UserTableGateway');
$table = new UserTable($tableGateway);
return $table;
},
'UserTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
),
);
} |
j'aimerai utiliser ce qu'il y a dans les différents model dans la classe Adapter afin de pouvoir vérifier si l'utilisateur peut se connecter ou non. mais la page ce bloque complètement dans le code suivant à la ligne 84:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| <?php
/**
* File for Auth Adapter Class
*
* @category User
* @author Ritesh Jha (mailrkj@gmail.com)
*/
namespace User\Auth;
use Zend\Authentication\Adapter\AdapterInterface;
use Zend\Authentication\Result as AuthenticationResult;
use User\Model\User;
class Adapter implements AdapterInterface{
protected $userTable;
/**
* Digest authentication user
*
* @var string
*/
protected $email;
/**
* Password for the user of the realm
*
* @var string
*/
protected $password;
/**
* Sets the username option value
*
* @param mixed $email
* @return Digest Provides a fluent interface
*/
public function setIdentity($email) {
$this->email = (string) $email;
return $this;
}
/**
* Sets the password option value
*
* @param mixed $password
* @return Digest Provides a fluent interface
*/
public function setCredential($password) {
$this->password = (string) $password;
return $this;
}
/**
* Defined by Zend\Authentication\Adapter\AdapterInterface
*
* @throws Exception\ExceptionInterface
* @return AuthenticationResult
*/
public function authenticate() {
$user = $this->getUserTable()
->find_by_email_and_password($this->email, $this->password);
//$user = User::find_by_email_and_password();
if ($user) {
$result['code'] = AuthenticationResult::SUCCESS;
$result['identity'] = $user;
$result['messages']['success'] = 'Logged in';
} else {
$result['code'] = AuthenticationResult::FAILURE_IDENTITY_NOT_FOUND;
$result['messages']['invalid'] = "Email '$this->email' and password combination not found";
$result['identity']= false;
}
return new AuthenticationResult($result['code'], $result['identity'], $result['messages']);
}
public function getUserTable()
{
if (!$this->userTable) {
$sm = $this->getServiceLocator(); //SUR CETTE LIGNE
$this->userTable = $sm->get('User\Model\UserTable');
}
return $this->userTable;
}
} |
Donc je fais appel à vous afin de comprendre comment utiliser ces différents services ...
Merci d'avance
Citation:
Edition :
Je pense qu'il me faudrait juste récupérer le getServiceLocator(), mais pas moyen de trouver comment l'avoir.