jquery dialog data probleem in Zend

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hi mensen,

ik wil in mijn Zend applicatie voor een delete-actie een jquery dialog openen maar loop tegen een klein probleem aan.

HTML:
1
<a href="#" id="<?php echo $page->id; ?>">click here</a>


PHP:
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
<?php 
$this->jQuery()->addOnLoad("
          $('a').click(function(){                    
             nr = $('a').attr('id');
            $('#dialog').data('id', nr ).dialog('open');
          });
       ");
?>
<?php 
echo $this->dialogContainer(
'dialog',
'Are you sure you want to delete this page?',
array(
    'autoOpen'      => false,
    'draggable'     => true,
    'modal'         => true,
    'resizable'     => true,
    'title'         => 'Confirm Delete',
    'closeOnEscape' => true,
    'buttons'   => array(
        'Delete' =>  new Zend_Json_Expr('function() {
            document.location = "/admin/page/delete/id/"+id 
        }'),
        'Cancel' => new Zend_Json_Expr('function() {
            $(this).dialog(\'close\');
        }')
    )
)

); 
?>



Als alternatief probeer ik het volgende maar ook daar zit ik met een denkfout..

PHP:
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
<?php 
echo $this->dialogContainer(
'dialog',
'Are you sure you want to delete this page?',
array(
    'autoOpen'      => false,
    'draggable'     => true,
    'modal'         => true,
    'resizable'     => true,
    'title'         => 'Confirm Delete',
    'closeOnEscape' => true,
    'buttons'   => array(
        'Delete' =>  new Zend_Json_Expr('function() {
            var nr = $(\'#dialog\').data(\'nr\');
            document.location=\''.$this->url(array(
                'module'     => 'admin',
                'controller' => 'page',
                'action'     => 'delete',
                'id'         => 'nr'
            ),"", true) .'\' 
        }'),
        'Cancel' => new Zend_Json_Expr('function() {
            $(this).dialog(\'close\');
        }')
    )
)

); 
?>


Ik krijg echter in document.location niet de id meegestuurd.
Enig idee wat ik fout doe?

[ Voor 28% gewijzigd door Verwijderd op 26-05-2012 13:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ondertussen heb ik al een werkende variant:

PHP:
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
<?php 
$this->jQuery()->addOnLoad("
          $('a').click(function(event){                    
             id = event.target.id;
            $('#dialog').data('id', id ).dialog('open');
          });
       ");
?>
<?php 
echo $this->dialogContainer(
'dialog',
'Are you sure you want to delete this item?',
array(
    'autoOpen'      => false,
    'draggable'     => true,
    'modal'         => true,
    'resizable'     => true,
    'title'         => 'Confirm Delete',
    'closeOnEscape' => true,
    'buttons'   => array(
        'Delete' =>  new Zend_Json_Expr('function() {
            var id = $(\'#dialog\').data(\'id\');
            document.location = "/admin/page/delete/id/"+id  
        }'),
        'Cancel' => new Zend_Json_Expr('function() {
            $(this).dialog(\'close\');
        }')
    )
)

); 
?>


echter vraag ik me af waarom ik in onderstaand voorbeeld id niet krijg toegewezen.. foute syntax?

PHP:
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
<?php 
echo $this->dialogContainer(
'dialog',
'Are you sure you want to delete this item?',
array(
    'autoOpen'      => false,
    'draggable'     => true,
    'modal'         => true,
    'resizable'     => true,
    'title'         => 'Confirm Delete',
    'closeOnEscape' => true,
    'buttons'   => array(
        'Delete' =>  new Zend_Json_Expr('function() {
            var id = $(\'#dialog\').data(\'id\');
            document.location="'.$this->url(array(
                'module'     => 'admin',
                'controller' => 'page',
                'action'     => 'delete',
                'id'        => '+id' 
            ),"", true) .'"'.  
        '}'),
        'Cancel' => new Zend_Json_Expr('function() {
            $(this).dialog(\'close\');
        }')
    )
)

); 
?>


Is dit zowiezo de 'juiste' manier om dit aan te pakken of adviseren jullie iets anders?

Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 12:44

Zoefff

❤ 

Het is echt zo'n brei van verschillende talen door elkaar dat ik me goed voor kan stellen dat er ergens iets mis gaat. Kan me ook niet indenken dat die voor jou heel leesbaar is?

Probeer het om te beginnen eens los te trekken. Dus linkjes e.d. van tevoren in PHP definieren en dan een net blok Javascript printen waarin je de linkjes en id's verwerkt.

Mijn eerste gok is dat er ergens iets van impliciete typecasting gebeurt waardoor het id niet overal meekomt. Door het netter op te schrijven kan je veel eenvoudiger debuggen :)


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter