Array leeg na post?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

Robert  dat ben ik

Robert dat ben ik

15/09/2011 12:22:38
Quote Anchor link
misschien een domme vraag..


Maar als ik een fomulier opbouw dan word er een addElements functie gedaan waarbij een array word mee gestuurd
deze array bevat een paar elementen die ik wil gebruiken


maar als ik na de post even een var_dump($form->getElements()); doe is alles leeg?
terwijl ik toch echt een array zet tijdens het maken van het fomulier

$form->addElements(array($username,$password,$button));

hier onder een stukje code die dit moet doen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class Form {
    public $elements = array();
    public function addElements(array $elements) {
        $this->elements += $elements;
    }

    public function getElements() {
        return $this->elements;
    }
}

?>


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
<?php
include_once 'form/form.php';
try {
    $form = new Form;
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        var_dump($form->getElements());
    }
else {
        $username = new Form_Element('text');
        $username->setLabel('Username');

        $password = new Form_Element('password');
        $password->setLabel('Password');
        
        $button = new Form_Element('button');
        $button->setLabel('Login');

        $form->addElements(array($username,$password,$button));
        echo $form->draw();
        var_dump($form);
    }
}
catch (Exception $e) {
    echo $e->getMessage();
}

?>


de elementen komen netjes in beeld
maar waarom is de $elements dan leeg als ik de getter aanroep na de post?
Gewijzigd op 15/09/2011 12:23:11 door Robert dat ben ik
 
PHP hulp

PHP hulp

27/10/2021 02:33:29
 
Victor -

Victor -

15/09/2011 12:28:22
Quote Anchor link
je zult de array moeten opslaan in een sessie, anders kun je er niet meer bij.
leesvoer php.net
 
Robert  dat ben ik

Robert dat ben ik

15/09/2011 12:39:08
Quote Anchor link
ja maar het probleem is dus ik heb maar een paar dingen nodig en niet alles

zo als username en password hoef ik niet want dit staat in de $_POST
dat werkt prima

maar als ik tijdens het aanmaken van het fomulier een filter wil toevoegen bij de username object moet ik deze dus apart in een sessie opslaan?

is er echt geen andere mogelijkheid dan een sessie dan?
 
Victor -

Victor -

15/09/2011 12:55:01
Quote Anchor link
even kijken of ik jouw vraag goed begrijp. de code die je hierboven hebt, laat je zien op een website, die vul je in, en dan druk je op login, en dan kom je op een andere pagina waar je die array wil lezen?
 
Robert  dat ben ik

Robert dat ben ik

15/09/2011 13:01:57
Quote Anchor link
nou in die array staan de elementen en één van die elementen wil ik na de post kunnen benaderen

het gaat hier om een filter

alleen deze zet ik al tijdens het maken van het object


bijvoorbeeld:
$username = new Form_Element('text');
$username->setLabel('Username')
->setFilter('NotEmpty'); <-----deze wil ik dus kunnen benaderen na de post


en het liefst zonder sessies :)
Gewijzigd op 15/09/2011 13:03:25 door Robert dat ben ik
 
Victor -

Victor -

15/09/2011 13:07:47
Quote Anchor link
je kan met php geen gegevens opvragen van een vorige pagina, zolang die niet met $_COOKIE $_SESSION of $_POST of $_GET zijn meegekomen, je zult dus een van deze moeten gebruiken, in jou geval is $_SESSION het handigst.
 
Niels K

Niels K

15/09/2011 13:15:20
Quote Anchor link
Verder, klopt dit ook niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->elements += $elements;
?>


Of je voegt het aan de bestaande array toe, door middel van array_merge bijvoorbeeld. Of gewoon het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$this
->elements = $elements;

?>


Nog een kleine tip, probeer zo weinig mogelijk gebruik te maken van public variabelen. Kies of protected of private. (Voorkeur gaat naar protected)
Gewijzigd op 15/09/2011 13:16:03 door Niels K
 
Robert  dat ben ik

Robert dat ben ik

15/09/2011 13:45:11
Quote Anchor link
Victor - op 15/09/2011 13:07:47:
je kan met php geen gegevens opvragen van een vorige pagina, zolang die niet met $_COOKIE $_SESSION of $_POST of $_GET zijn meegekomen, je zult dus een van deze moeten gebruiken, in jou geval is $_SESSION het handigst.



misschien een stomme vraag,

maar is een xml file niet een mogelijkheid?

die bijvoorbeeld tijdelijk deze variables opslaat?

en na de post een Form_Post class aan roepen die deze gaat uitlezen en afhandelen?
 
Victor -

Victor -

15/09/2011 13:52:46
Quote Anchor link
dat kan maar dan heb je bij elke inlog poging een xml file, en het is veel minder snel.
Wat is jou probleem tegen $_SESSIONs?
 
Robert  dat ben ik

Robert dat ben ik

15/09/2011 13:52:46
Quote Anchor link
Niels Kieviet op 15/09/2011 13:15:20:
Verder, klopt dit ook niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->elements += $elements;
?>


Of je voegt het aan de bestaande array toe, door middel van array_merge bijvoorbeeld. Of gewoon het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$this
->elements = $elements;

?>



dit kreeg ik in deze topic van Pim: Topic

Ik zal het even veranderen bedankt voor de tip!







Toevoeging op 15/09/2011 13:56:32:

Victor - op 15/09/2011 13:52:46:
dat kan maar dan heb je bij elke inlog poging een xml file, en het is veel minder snel.
Wat is jou probleem tegen $_SESSIONs?


Ik heb niks tegen sessies hoor, maar kan een gebruiker zijn sessies en cookies niet uitzetten dan? als dit wel kan dan werkt het niet meer toch?
Gewijzigd op 15/09/2011 14:00:22 door Robert dat ben ik
 
Victor -

Victor -

15/09/2011 14:17:53
Quote Anchor link
hij kan cookies verwijderen of tegenhouden, maar een sessie is gewoon een tijdelijk bestandje op de server. dus niet op de client computer..
 



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.