Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Form action als object?

5 antwoorden
  • Ik gebruik de action in een HTML form altijd alleen om door te verwijzen naar een ander script voor verdere verwerking, of naar zichzelf. Nu ik met OOP bezig ben lijkt het me veel handiger om de verwerking van een formulier in een object/classe te stoppen en deze direct aan te roepen. Maar is dat ook mogelijk? En hoe doe ik dat dan? Dus iets in de zin van: [code:1:31a70dbf9d] $mail = new MailClass(); <form action="<?php $mail->send(blabla) ?>" method="post" id="mailform"> [/code:1:31a70dbf9d] Ik heb al wat zitten proberen, maar tot op heden zonder succes.
  • Volgens mij is het niet mogelijk wat je wil, of anders begrijp ik je misschien verkeerd. Waar het fout gaat is dat je client side en server side door elkaar lijkt te halen. De browser heeft geen benul van het bestaan van een server side verwerking, in dit geval door PHP. De action zal dus toch een verwijzing moeten bevatten naar de locatie waar de input verwerkt moet worden. Op het moment dat je form door PHP gegenereerd wordt is het iig niet eens naar de browser verstuurd en heb je ook geen mogelijkheid om gegevens van het form te verwerken. Een alternatieve aanpak met AJAX moet echter wel kunnen werken, dan gebruik je de "normale" HTML-versie als graceful degration. - Bas
  • Volgens mij kun je de action gewoon op index.php laten staan met method post. Middels hidden inputfields kun je zaken laten checken als mode, act, locatie of wat dan ook. Daarmee kun je dan de juiste class laten aanroepen en uitvoeren.
  • Ja volgens mij is het een denkprobleem. Ik vond het "zonde" om een apart script te maken voor de verwerking, terwijl die alleen maar gebruik maakt van objecten die ik ook al in de index/formulier tot mijn beschikking had. Maar ik kan het ook in de index laten staan, en met SELF in de action naar zichzelf laten verwijzen.
  • Als je classes wil hergerbruiken doe je er waarschijnlijk goed aan om ze in een apart bestand te zetten en ze te includen wanneer je ze nodig hebt. De handigste methode (als je het eenmaal doorhebt) is waarschijnlijk [url=http://php.net/manual/en/language.oop5.autoload.php]autoloading[/url]. Op deze manier heb ik ook een structuur gebouwd met allerlei bestanden in één map en dan elke klasse een eigen bestand. Klasse "Trein" komt dan in "trein.class.php", enzovoorts. - Bas

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.