Undefinded property / jQuery error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Java Developer / Domotica / Public Cloud / Verbete

Functieomschrijving Wil jij als Java Developer een bijdrage leveren aan het ontwikkelen van innovatie Java applicaties die het levensgeluk van patiënten in diverse zorginstellingen aanzienlijk verbeterd? Lees dan snel verder! Ontwikkelen van nieuwe applicaties in Public Cloud; Optimaliseren en verbeteren van bestaande applicaties in Private Cloud; Meedenken over verbeterprojecten; Maken en uitvoeren van Stress Testing; Ontwikkelen en verbeteren van de Mobile app. Functie-eisen Hbo werk- en denkniveau; Minimaal 5 jaar relevante werkervaring; Ervaring in Java 8; Kennis van Linux, Public- en Private Cloudtechnieken; Je bent communicatief erg sterk en kan tegen de nodige stress. Bedrijfsomschrijving Deze organisatie is al ruim

Bekijk vacature »

Bart Jans

Bart Jans

11/11/2019 18:08:46
Quote Anchor link
Hallo,

ik probeer een ACL permissie systeem in PHP te maken om gebruikers toestemming te geven om info van bepaalde instrumenten te zien, of deze terug in te trekken.
Ik heb een edit pagina aangemaakt met een tabel met een lijst van deze instrumenten, plus een icoon om te klikken om toestemming te geven/in te trekken.
Als ik op het icoon klik krijg ik echter jQuery melding "iets ging verkeerd". Als ik de code wat verander krijg ik ook undefined property errors. Ben al een paar dagen aan het zoeken wat fout is, maar zit wat vast. Kunnen jullie helpen aub, of weten jullie een bestaand voorbeeld van dergelijk systeem ?

Stuk van de code :

in de Edit.php :
<tbody>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
              foreach($this->instruments as $instrument): ?>

<tr data-id="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$instrument->id?>
">
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$instrument->name?>
</td>
<td class="text-right">
<a class="btn btn-sm btn-outline-info mr-1" onclick="toggleAcl('
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$instrument->id,$this->users->id?>
');return false;">
<i data-id="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$instrument->id?>
" class="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=($instrument->id == 0)? 'fas fa-star': 'far fa-star'?>
"></i>
</a>
</td>
</tr>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php endforeach; ?>

</tbody>
<script>
function toggleAcl(id,user_id){
jQuery.ajax({
url: '
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=PROOT?>
adminusers/toggleAcl',
method: "POST",
data : {id : id, user_id : user_id},
success : function(resp) {
if(resp.success){
var el = jQuery('i[data-id="'+resp.model_id+'"]');
var klass = (resp.acl)? 'fas' : 'far';
el.removeClass("fas far");
el.addClass(klass);
alertMsg(resp.msg,'success');
} else {
alertMsg(resp.msg, 'danger');
}
}
});
}
</script>

in de controller :
public function toggleAclAction(){
$resp = ['success'=>false,'msg'=>'Iets ging verkeerd'];
if($this->request->isPost()){
$id = $this->request->get('id');
$user_id = $this->request->get('user_id');
$user = adminUsers::findByUserId2($user_id);
$instrument = Instruments::findById($id);
if($instrument){
Users::addAcl($user->id,$instrument->name);
$msg = "Right added.";
$resp = ['success' => true, 'msg' => $msg,'model_id' => $id,'acl'=>$user->acl];
}
else {
// Users::removeAcl($user_id,$instrument->name);
// $msg = "Right removed.";
// $resp = ['success' => true, 'msg' => $msg,'model_id' => $id,'acl'=>$user_id->acl];
}
}
$this->jsonResponse($resp);
}

Dank bij voorbaat !
 
PHP hulp

PHP hulp

07/12/2019 14:43:31
 
- Ariën -
Beheerder

- Ariën -

11/11/2019 18:19:00
Quote Anchor link
Zou je jouw code tussen code-tags willen plaatsen voor betere leesbaarheid? Zie ook de Veelgestelde Vragen.
 
Bart Jans

Bart Jans

11/11/2019 18:55:57
Quote Anchor link
Dag Ariën, ok sorry. Tweede poging :)

In mijn edit.php, tabel om beschikbare instrumenten weer te geven :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<tbody>
              <?php
              foreach($this->instruments as $instrument): ?>

                <tr data-id="<?=$instrument->id?>">
                  <td><?=$instrument->name?></td>
                  <td class="text-right">
                    <a class="btn btn-sm btn-outline-info mr-1" onclick="toggleAcl('<?=$instrument->id,$this->users->id?>');return false;">
                      <i data-id="<?=$instrument->id?>" class="<?=($instrument->id == 0)? 'fas fa-star': 'far fa-star'?>"></i>
                    </a>
                  </td>
                </tr>
              <?php endforeach; ?>
            </tbody>

Onderaan edit.php, de jQuery toggle :
<script>
function toggleAcl(id,user_id){
  jQuery.ajax({
    url: '<?=PROOT?>adminusers/toggleAcl',
    method: "POST",
    data : {id : id, user_id : user_id},
    success : function(resp) {
      if(resp.success){
        var el = jQuery('i[data-id="'+resp.model_id+'"]');
        var klass = (resp.acl)? 'fas' : 'far';
        el.removeClass("fas far");
        el.addClass(klass);
        alertMsg(resp.msg,'success');
      } else {
        alertMsg(resp.msg, 'danger');
      }
    }
  });
}
</script>

In mijn controller file, de toggleAction :

public function toggleAclAction(){
    $resp = ['success'=>false,'msg'=>'Something went wrong...'];
    if($this->request->isPost()){
      $id = $this->request->get('id');
      $user_id = $this->request->get('user_id');
      $user = adminUsers::findByUserId2($user_id);
      $instrument = Instruments::findById($id);
      if($instrument){
        Users::addAcl($user->id,$instrument->name);
        $msg = "Toestemming gegeven.";
        $resp = ['success' => true, 'msg' => $msg,'model_id' => $id,'acl'=>$user->acl];
      }
    }
    $this->jsonResponse($resp);
  }
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.