phptk

Für Installationen unter Windows
Antworten
JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

phptk

Beitrag von JosefKoller »

Hallo,

ich habe bei sourceforge das Toolkit "phptk" gefunden.

Es kann nach der Beschreibung als Lazarus PHP-IDe integriert werden.

dort wird beschrieben, daß man z.B. die Phpsyntaxprüfung folgendermaßen einrichten soll:

Hier der Text:
....

Lazarus kann als Alternative zu Delphi for PHP über externe Werkzeuge zur Entwicklung von von VCL for PHP Anwendungen genutzt werden.
Um die nötigen Ergänzungen in Lazarus zu integrieren wählt man Werkzeuge >> Externe Werkzeuge einrichten... (Tools >> Configure custom tools) und anschließend hinzufügen.

PHP Syntaxprüfung

Titel: PHP Syntaxprüfung (oder etwas anderes, je nach persönlichem Geschmack)
Programmdateiname: Pfad zu dem selbst kompilierten CheckPHP-Programm (siehe oben)
Parameter: "/usr/local/php5/bin/php" "$EdFile()" $(Save)
Der Pfad für das PHP-Kommandozeilenprogramm muss entsprechend angepasst werden. Die Einträge welche mit $ beginnen, sind Makros und werden im Werkzeug-Dialog unten erklärt.
Arbeitsverzeichnis: keine Eingabe nötig

"Scannen der Ausgabe nach Free Pascal-Compilermeldungen" muss aktiviert werden.
Außerdem kann optional eine Tastenkombination für den schnelleren Aufruf vergeben werden.

....
Ich scheitere, so scheint es, an der Parametereinstellung. Ich lese die Zeile Paramter so, daß hier der Pfad zur php.exe angegeben werden soll. Der wäre bei mir C:\xampp\php\php.exe.

Wenn ich dann eine Anwendung erzeuge und auf die erzeugte Phpsyntaxprüfung klicke kommt die Fehlermeldung:

Kann Datei "" nicht finden.......

Weiß jemand, wie man so ein externes Werkzeug richtig einstellt?

Besten Dank.

Josef

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: phptk

Beitrag von monta »

Ich sehe, du hast meine Übersetzung gefundn ;)

PHP.exe ist richtig, mit absoluten Pfad. Kann es sein, das du die Datei vorher nicht (mit php-Endung) gespeichert hast?
Johannes

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: phptk

Beitrag von JosefKoller »

Hallo,

da bin ich ja gleich beim richtigen Ansprechpartner gelandet.

In dem Tutorial sind eben, so meine ich, diese Pfadangaben etwas zweideutig. Im Beispiel für phpSyntaxcheck steht:

Parameter: "/usr/local/php5/bin/php" "$EdFile()" $(Save)

also: Gänsefüßchen einmal um den Pad, dann um $EdFile() aber um $(Save) nicht.
dann: steht im Beispiel nur der Pfad ohne php.exe,
dann beginnt er bei usr.

Als Antwort schreibst du mir, daß meine Angabe, also
C:\xampp\php\php.exe richtig wäre. Also ohne Gänsefüßchen.

Was soll ich jetzt bei Pfad eingeben????

Dann noch eine Frage:

Man kann nur die Oberfläche in Lazarus gestalten, richtig??? Die Eventhandler muß man händisch in die php-Datei dazu schreiben oder???
Kann man diese php Datei mit Lazarus öffnen? Kann man dann nur über php-Datei den Syntaxcheck laufen lassen?

Ist alles etwas verwirrend. gibt es noch irgend ein tutorial in dem steht wie man es mit Lazarus richtig macht???

Danke nochmal.

Josef

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: phptk

Beitrag von JosefKoller »

Hallo,

ich hab jetzt bei Compilerfehlermeldung folgenden Hinweis bekommen:

Fatal: Conversion aborted - Can't create PHP code file Koller\/Sites/project1.php

Doch wo kommt das Verzeichnis Koller her?

Bei Formulare zu PhP konvertieren habe ich folgende einstellungen getroffen:


Programmdateiname: C:\lazarus\phptk\fmtophp.exe
Parameter: $Project(InfoFile) $(Home)/Sites/$NameOnly($Project(InfoFile)).php -r $(SaveAll)
und Scannen der Ausgabe .... wurde gesetzt.

Wo und wie muß ich denn jetzt Koller anlegen? Die Systax scheint mir etwas wiedersprüchlich, ich meine die Shlases, einmal \, dann folgend/

Danke nachmals.

Josef

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: phptk

Beitrag von Targion »

Sieht aus, als wäre das PHPTk wohl primär für Linux/Unix Systeme ausgelegt, da würde es diese Pfade geben. (Koller wäre dann vermutlich dein Homeverzeichnis)

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: phptk

Beitrag von monta »

Nein, es geht gleich unter beiden Systemen. Ich hätte es auch nicht übersetzt und ins Netz gestellt, ohne es vorher entsprechend gegengeprüft zu haben.

also: Gänsefüßchen einmal um den Pad, dann um $EdFile() aber um $(Save) nicht.
dann: steht im Beispiel nur der Pfad ohne php.exe,
dann beginnt er bei usr.


Ich hab mich da etwas unklar ausgedrückt, ich meinte nur, das es korrekt ist, dort den absoluten Pfad anzugeben, unabhängig con dem Rest des strings.

Bitte einfach genau so die Gänsefüßchen setzen, wie sie dort auch stehen...also einfach abschreiben und die Pfade anpassen und alles funktioniert egal auf welchem System, habe ich selbst mehrfach getestet. Und das einmal mit und einmal ohne Anführunszeichen angegeben wird hat durchaus seinen Sinn.

Und das ist doch das selbe...php ist unter Linux nunmal das Binary, folglich ist nicht nur der Pfad sondern sehr wohl der absolute Pfad zum PHP-Executable angegeben. Und der Linux-Pfad beginnt nunmal auch bei / gefolgt von bspw. usr. Es ist also eindeutig geschrieben. Ich kann natürlich das selbe Beispiel auch noch für Windows drunter schreiben, daran habe ich ehrlich gesagt beim verfassen nicht gedacht, das extra anzugeben.
Also, wenn man das einfach von Linux auf Windows umdenkt, steht da irgendwas wie
"C:\Programme...\php.exe"

Funktionierend sieht der Syntaxcheck (bei mir unter Windows) so aus:
php_syntaxcheck.png

Im Hintergrund siehst du auch, dass er erfolgreich durchlaufen wurde (nicht wundern, das Messagewindow ist angedockt) an dem weniger sinnvollen PHP-Beispiel. ;)

Zur Formularumwandlung...unter Windows bitte den kurzen Parameter-String verwenden, der andere ist ja auch nur dazu da, das die Dateien direkt im Verzeichnis des Webservers landen und da bin ich von Linux ausgegangen. Wenn du den kurzen erstgenannten einträgst, geht es und die PHP-Dateien landen im selben Ordner wie deine normalen Projektdateien (lpr, pas,...).

Funktionierende Konfiguration:
formularumwandlung.png


Also, einfach so abschreiben wie es da steht (Pfade natürlich anpassen), dann hoffe ich geht es. ;)

Das Resultat aus dem Beispiel von oben sieht dann so aus:
Resultat.png


Und um die Frage noch zu beantworten, ja, die Anwendungslogik musst du direkt in PHP schreiben oder in Pascal ein Apache-Modul schreiben und dieses einbinden. In Kurzfassung ist das ja unter Hinweise und Beispiele beschrieben. (article.php?id=5) Da wäre, wenn das erste Problem mit den Werkzeugen behoben ist, ggf. auch das kleine Beipeil, welches ja bei phptk dabei ist, für dich interessant.
Johannes

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: phptk

Beitrag von JosefKoller »

Hallo,

also, ich hab jetzt z.B. bei Php Syntaxprüfung folgende Einstellungen:

Programmdateiname: C:\lazarus\phptk\checkphp.exe
Parameter: "C:\xampp\php\php.exe" "$EdFile()" $(Save)
Zusätzlich habe ich noch bei Arbeitsverzeichnis den Pfad angegeben (Verzeichnis, indem die Dateien abgelegt werden):

C:\xampp\htdocs\Koller

und das Häkchen bei "Scannen bei Ausgabe ...

Ich hab jetzt in Lazarus eine php-Datei geöffnet (zuvor erstellt mit "Formulare zu php konvertieren). Wenn ich nun auf "Check php Syntax klicke, kommt eine Fehlermeldungsfenster "CLI funktioniert nicht mehr". Wenn ich dann nach dem Erscheinen des zweiten Meldungfensters "Möchten sie weitere Informationen zum Problem senden" auf Abbrechen klicke kommt im Lazarus Meldungsfenster ""Check PHP Syntax" beendet".

Klickt man auf diese Meldung kommt wieder das Fenster "Kann die Datei "" nicht finden, usw.

Die Syntaxprüfung scheint aber doch zu laufen, denn wenn ich in die php-Datei eine falsche zeile reinschreibe, bleibt er in der darauffolgenden Zeile stehen. Es kommt auch im Lazarusmeldungsfenster ein entsprechender Hinwei: "C:\xampp\htdocs\Koller\project1.php(7) Error: parse error".

Nur, wie bekomme ich diese "CLI funktioniert nicht mehr" -Meldung weg?

Javascript Syntax Prüfung

Auch hier wird die Syntaxprüfung durchlaufen, es kommt aber dann trotzdem die Meldung "Kann die Datei "" nicht finden. .....

Irgendwie scheint es mit den einstellungen bei mir doch nicht recht zu klappen.

Hier noch die Einstellungen für die Javascriptsyntaxprüfung:

Programmdateiname: C:\lazarus\phptk\checkjs.exe
Parameter: "$EdFile()" $(Save)
Arbeitsverzeichnis: C:\lazarus\phptk (anmerkung: In diesem Verzeichnis liegen die kompilierte datei und js.jar ,usw.
Häkchen bei "Scannen der Ausgabe" gesetzt.

Die Konvertierung zu Php funktioniert jetzt übrigens. Ich habe bei Parameter einfach den kompletten Pfad zu zu den Dateien angegeben.

"$Project(InfoFile)" c:/xampp/htdocs/Koller/$NameOnly($Project(InfoFile)).php -r $(SaveAll)

Das Arbeitsverzeichnis ist leer. Vielleicht muß hier trotzdem auch noch der Pfad zu den Dateien rein oder der Pfad zur kompilierten Daeit fmtophp.exe.

Vielleciht kannst du mit den genannten Meldungen was anfangen, damit ich die Fehlermeldungen wegbekomme.

Ansonsten schaut die gaze Sache gut aus. Bin noch am rumprobieren.

Ich bekomme z.b. keine Anbindung an eine Datenbank hin. Wenn ich in Lazarus die Datenbankverbindung aufbaue und die Daten in einem Grid anzeigen lasse funktioniert es wie gewohnt.

Nur in den php-Dateien test.php und test.xml.php finden sich nichts davon. Weißt du, wie ich eine solche Verbindung hinbekomme und Daten in einem Grid anzeigen lassen kann. Mit der Hilfe zu VCL for php" bin ich nicht recht weitergekommen.

Besten Dank.

Josef

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: phptk

Beitrag von JosefKoller »

Hallo,

mit dieser phptk Geshichte scheinen sich noch nicht allzu viele auseinangesetzt zu haben. Ich versuche es trotzdem nochmal mit einer Frage:

Du schreibst in dem Tutorial

...
PHP Toolkit's Verbindung zu Ajax
...
Die VCL for PHP ajaxCall-Methode kann dennoch, wenn gewünscht, verwendet werden. Dazu fügt man den Switch -c ein, wenn die Form konvertiert wird. Wenn der c-Switch genutzt wird, erzeugt FmToPhp nicht den XMLHttpRequest-basierten Code.
...
Ist damit ein Kompilerschalter in der Form von:
{$ C-}
gemeint???

Oder wie und wo setze ich was in die pas-Datei???

Meine Versuche mit dieser einigen dieser Schalterstellungen brachten keinen Erfolg. z.B (Fehlermeldung beim Compilieren:
uvorlage.pas(2,2) Warning: Illegal compiler switch "$"). eingegeben hatte ich {$ -c};

Ich kenne sowas nur in form von {$C+ oder -}.

Wie setze ich dieses Switch -c richtig?

Besten Dank.

Josef

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: phptk

Beitrag von monta »

JosefKoller hat geschrieben:Ist damit ein Kompilerschalter in der Form von:
{$ C-}
gemeint???


nein, sondern ein Paramteer für die Kommandozeile.

Wenn du mal im Terminal fmtophp aufrust, bekommst du auch die Syntax:

Code: Alles auswählen

FmToPhp, version 1.0.0 - converts Delphi or Lazarus form files to PHP.
 
Usage: FmToPhp [mainform|projectfile] [otherforms] [phpfile] [switches]
 
Switches:
  -c  Output ajaxCall code rather than JavaScript XMLHttpRequest AJAX code.
  -j  Create Delphi for PHP project file too (.phprj extension).
  -r  Reformat any error message so Lazarus will display it.
  -x  Only create .xml.php file (useful to preserve edits to .php file).
 
Examples:
  FmToPhp MyForm.dfm - creates MyForm.php and MyForm.xml.php
 
  FmToPhp hellomain.dfm helloabout.dfm ~/sites/hello.php - creates hello.php
    and hello.xml.php in ~/sites folder from hellomain.dfm and helloabout.dfm
 
  FmToPhp hello.lpi - creates hello.php and hello.xml.php from project's forms
 
Notes:
  FmToPhp will look for its configuration data in E:\lazarus_tools\php_toolkit\fmtophp.ini
 
  Resulting .php files require open-source VCL for PHP files on Web server.


Du müsstest also etwa soetwas angeben bei den Parametern zu fmtophp in der Werkzeug-Konfiguration:
"$Project(InfoFile)" -c -r $(SaveAll)

Ich verstehe allerdings nicht ganz, wieso du nicht einfach erstmal die Konfiguration so abschreibst, wie sie im tutorial steht sondern irgendwas mit Pfaden absolut da rein schreibst ;) Das sollte Lazarus automatisch setzen und das ist allemal sauberer und einfacher bei mehr als einem Projekt.

JosefKoller hat geschrieben:Nur, wie bekomme ich diese "CLI funktioniert nicht mehr" -Meldung weg?



Die kommt aber wohl nicht von Lazarus sondern von PHP. Sonst müsste dieser String irgendwo in den lazarussourcen auftauchen und das macht er nicht. Bist du sicher, das du eine funktionierende PHP.exe-Version hast?
Im übrigen, ich habe genau die obigen Beschriebenen Einstellungen unter Windows getestet bevor ich meinen letzten Beitrag verfasst habe. Ersetze mal deine php.exe. Ich würde dir statt Xampp den Uniform-Server empfehlen. Wesentlich schlanker und ebenfalls sehr einfach (oder sogar einfacher) zu bedienen:
http://www.uniformserver.com/

Das Problem ist die bei Xampp enthaltene Version der PHP.exe, wenn man anderen Seiten im Netz glauben schenkt. Mit der bei Uniformserver enthaltenen PHP-Version funktioniert es. Das ganze ist ein Problem der PHP.exe nicht vom Toolkit oder von Lazarus, also irgendwie ne andere Version besorgen :wink:


Bei der JS-Syntaxprüfung bin ich überfragt. Hat deine Datei eventuell kein Javascript enthalten? soweit ich weiß, extrahiert der Toolkit zunächst alles was Javascript heißt in eine separate Datei, ich könnte mir vorstellen, das dan der Fehler austritt, wenn kein Js zum extrahieren enthalten ist. Da bin ich mir aber nicht sicher, somal die prüfung ja scheinbar dennoch bestens durchläuft.


(Es gäbe übrigens auch noch Extpascal als Alternative)
Johannes

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: phptk

Beitrag von JosefKoller »

Hallo,

vielen Dank für die Mühe, die Du Dir mit mir machst.

der cli-Fehler kommt, wie von Dir vermutet, aus der php.exe. Er stört beim momentanen Stand aber nicht weiter. sollte es erst werden mit der entwicklung über das phptk toolkit werd ich da mal näher nachschauen und evtl. den von dir vorgeschlagenen Weg einschlagen.

Das phptk toolkit wär schon richtig. Das Beispiel hab ich natürlich gemacht, auch das weitere Arbeiten mit vcl for php. Das klappt auch alles. Beispielsweise kann ich "Datasource" und die "mysql-Komponenten" einfügen, um eine Verbindung zu meiner mySQLTest Datenbank aufbauen.

Es hapeert schlichtweg an der weiteren Gestaltung der EventHandler.

Der phptk Toolikit Code beinhaltet beispielsweise folgende Zeilen:
...
function Button1JSClick($sender, $params)
{
?>
alert("Event handler not implemented yet.");
<?php
}
...

Ich hab daraufhin gegoogelt und bei Beispielen für Delphiforphp einiges gefunden, was bei solchen Klicks drinsteht. Beispielsweise folgender Code:

$this->MySQLTable1>next();

Um zu kontrollieren, was passiert, hab ich ein Textfeld (Text1).Dem hab ich ein Datasource und ein Datafield property verpaßt. In dem Edit1 wird auch der jeweilige Wert angezeigt. die Verbindung zur Datenbanktabelle ist also da.

Nur, daß Problem ist eben der Event. Wenn ich den genannten Code "$this->MySQLTable1>next();" beim Clickevent einfüge wird beim Aufruf der Seite im Browser sofort auf den zweiten Datensatz gesprungen und der Wert des Feldes im Text1 angezeigt.

Wenn ich dann auf den Button klicke tut sich gar nichts mehr.

Entschuldige die lange Eionleitung. eigentlich müßte ja mit dem Klick auf den nächsten Datensatz gesprungen werden. Es fehlt also an einer Implentierung eines geeigneten Eventhandlings. Nur wie .......

Ich dachte, es wär mit $this->MySQLTable1>next(); getan.

Ich habe deswegen im vcl for php Forum gepostet, da kam aber die Antwort, daß der Handler nichts zu tun hat (nothing to do). Naja, das weiß ich auch. Aber sonst nichts an Erläuterungen. Auch auf meine nochmailge Frage dahingehend. Die entwickler scheinen nur daran interessiert zu sein, daß das Ding unter DelphiPhp läuft.

Hast du eine Ahnung was denn nun in das Clickevent rein muß, damit beim Klicken auf den nächsten Datensatz gesprungen wird?

Besten Dank.

Josef


Ich sche

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: phptk

Beitrag von monta »

Da bin ich überfargt. Ich würde wahrscheinlich direkt die DB-Anbindung in PHP schreiben, anstatt mich mit den BD-Komponenten der VCL rumzuschlagen. Gibt es dazu kein Beipiel von Delphi was man übertragen könnte?
Johannes

Antworten