Позвольте мне объяснить мою проблему.Я управляю приложением, которое позволяет назначать роли пользователям и предоставлять им доступ к различным схемам с помощью базы данных PostgreSQL.
Каждый пользователь - это объект «новый пользователь», созданный моим User.class.php с этими свойствами:
class User{
private $_idUser;
private $_login;
private $_password;
private $_roles;
private $_schemas;
// Getter / Setter
/**
* Get the value of _roles
*/
public function getRoles()
{
return $this->_roles;
}
/**
* Get the value of _schemas
*/
public function getSchemas()
{
return $this->_schemas;
}
}
Все работает, я могу изменить пользователя или создать его, предоставить ему доступ к одной или нескольким схемам, назначить ему одну или несколько ролей.Роли и схемы могут быть выбраны в флажках.Как вы видите:
Например, флажок схем:
$schemas = SchemaManager::getList();
<div id="list-schemas">
<?php
foreach ($schemas as $elt) {
echo '<input id="' . $elt->getSchema() . '" type="checkbox" name="schemas[]" value="' . $elt->getSchema() . '"/>' . $elt->getSchema() . '<br />';
}
?>
</div>
Вот как обновить или добавить пользователя в базу данных, создав нового пользователя:
case "addUsers":
{
$p = new User(["idUser" => $_POST["id"], "login" => $_POST["pseudo"], "password" => $_POST["password"], "roles" => isset($_POST["roles"]) ? $_POST["roles"] : null, "schemas" => isset($_POST["schemas"]) ? $_POST["schemas"] : null]);
UserManager::add($p);
break;
}
case "updUsers":
{
$p = new User(["idUser" => $_POST["id"], "login" => $_POST["pseudo"], "password" => $_POST["password"], "roles" => isset($_POST["roles"]) ? $_POST["roles"] : null, "schemas" => isset($_POST["schemas"]) ? $_POST["schemas"] : null]);
UserManager::update($p);
break;
}
Когда я добавляю нового пользователя:
object(User)[1]
private '_idUser' => string '' (length=0)
private '_login' => string 'azdazdzad' (length=9)
private '_password' => string 'aadzAZAZD846@@' (length=14)
private '_roles' =>
array (size=1)
0 => string 'role2' (length=5)
private '_schemas' =>
array (size=1)
0 => string 'schematest2' (length=11)
Это означает, что при добавлении или обновлении пользователя: роли и схемы не пусты, потому что изменения выполняются в базе данных.Тем не менее, я хотел бы видеть детали каждого пользователя, поэтому я сделал это:
$list = UserManager::getList();
var_dump($list);
foreach ($list as $elt) {
echo '<tr>';
echo '<td><a href="#edit'.$elt->getIdUser().'">Details</a></td>';
echo '<div class="lightbox" id="edit'.$elt->getIdUser().'">';
echo '<figure>';
echo '<a href="#" class="closemsg"></a>';
echo '<figcaption><h4>'.$elt->getLogin().'</h4>';
$roles=$elt->getRoles();
var_dump($roles); // <-------------NULL
if(isset($roles) && !empty($roles)){
echo '<p>Membership of roles :</p>';
echo '<ul>';
foreach ($roles as $role) {
echo '<li>'.$role.'</li>';
}
echo '</ul>';
}
$schemas=$elt->getSchemas();
var_dump($schemas); // <-------------NULL
if(isset($schemas) && !empty($schemas)){
echo '<p>Grantee of schemas :</p>';
echo '<ul>';
foreach ($schemas as $schema) {
echo '<li>'.$schema.'</li>';
}
echo '</ul>';
}
echo '</figcaption>';
echo '</figure>';
echo '</div>';
echo '</tr>';
}
и когда я нажимаю «Детали», ничего не появляется для ролей и схем.ПОЧЕМУ ???Вот, например, пользователь, когда мы делаем var_dump ($ list);:
object(User)[10]
private '_idUser' => string '24734' (length=5)
private '_login' => string 'user10' (length=6)
private '_password' => string '********' (length=8)
private '_roles' => null
private '_schemas' => null
Кто-нибудь может мне помочь?