TYPO3 Extbase SQL Debug

Damit mir der Orignal Link nicht wieder verloren geht:

Open the file „/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php“
Navigate to the function „GetObjectDataByQuery()“
Go to the line next to „$this->replacePlaceholders($sql, $parameters, $tableName);“
Insert the following code

var_dump($sql);

Diese Vorgehensweise ist besser als andere im Netz da es nach „replacePlaceholders“ ansetzt, somit hat man wirklich den kompletten SQL Query.

Original von hier:
http://www.derhansen.de/2013/01/typo3-get-resulting-sql-from-extbase.html

Wrappe n-Elemente mit TYPO3 Fluid Viewhelper

Problem: wir haben 12 Elemente einer Extension und alle 2 Elemente sollen in ein extra div gewrappt werden. Bis jetzt habe ich leider nichts fertiges dafür bei den ViewHelpern gefunden. Daher habe ich es versucht folgendermaßen um zusetzen. Zuerst wird ein öffnendes Div geschrieben, dann zum Schluss ein schließendes. Im Div selbst fragen wir wir ab die Anzahl des Elements ab und schreiben dann ein schließendes und ein öffnendes div-Tag. In Code sieht es dann auch schon so aus.

{f:if(condition: iter.isFirst, then: '
<div>')}
{listRow.value}
{f:if(condition: iter.isLast, then: '</div>
')}

Als erstes die f:for each Schleife, hier speichern wir in der Variable „iter“ alle Iterations Informationen, das können folgende sein:

iteration (string, optional): The name of the variable to store iteration information (index, cycle, isFirst, isLast, isEven, isOdd) Quelle: docs.typo3.org

Damit nicht leere tags dastehen, schreiben wir das öffnende und schließende Tag mit einer If Abfrage.

Mit Hilfe der Iterations Info cycle und Modulo können wir nun errechnen wann immer unsere zwei(oder 3,4) Elemente durchlaufen sind um das schließende und öffnende Div Tag zu schreiben.

{f:if(condition: iter.isLast, else: '<div>')}

Die Idee ist einfach if (Element % 2 == 0 AND nicht das letzte Elment) dann schreibe

'<div>'.

Leider habe ich es nicht hinbekommen die Schreibweise eins zu eins zu übernehmen. Die Condition Modulo 2 konnte ich nicht fragen ob Sie null ist, daher habe ich frage ich oben eigentlich ob es null ist und nutze dann nur den else Zweig um die logische UND Verknüpfung in einer neuen IF Abfrage unter zubringen, Auch hier nutze ich nur den Else Zweig. Wenn ich nicht Abfrage ob isLast == 0 ist, kann es bei z.B. genau zwei Elementen zu einem leeren DIV tag kommen.

</div>

Also der Code noch mal kompett:


{f:if(condition: iter.isFirst, then: '</code>
<div>')}
{listRow.value}


{f:if(condition: iter.isLast, else: '</div>
<div>')}


{f:if(condition: iter.isLast, then: '</div>
')}

Chrome Remote Debugging

Wenn man Webseiten baut sind Tools wie die Chrome DevTools oder Firebug kaum wegzudenken. Im Mobile Bereich ist es immernoch ein wenig schwierig, wenn man allerdings Chroome installieren kann sieht es schon wieder ETWAS besser aus.

Voraussetzung ist das Android SDK, welches man hier herunterladen kann:
http://developer.android.com/sdk/index.html

Danach auf dem Mobile Geräte in Chrome unter

Einstellungen > Entwickler-Tools > „Web-Debugging wie USB aktvieren“ anklicken, danach Geräte per USB anschliessen.

jetzt per Commandline/Terminal zur adb(.exe) navigieren und einfach schon mal mit

adb devices

testen ob das Geräte gefunden wird.

Danach schreiben wir folgendes

adb forward tcp:9222 localabstract:chrome_devtools_remote

jetzt Mobile Chrome starten und die zu debuggende Seite aufrufen. Lokal rufen wir dann im Chrome die

http://localhost:9222

auf und legen los.

Quelle:
https://developers.google.com/chrome/mobile/docs/debugging

XAMPP unter Mac OS X

Wenn man mal mit MacOS X und xampp arbeiten muss hier ein Tipp von crashsource.de der mir gerade sehr geholfen hat.

Um diesen Problem mit den Zugriffsrechten aus dem Weg zu gehen sind folgende Änderungen in der /Applications/XAMPP/etc/httpd.conf notwendig:

DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs" 

ändern in

DocumentRoot "/Users/USERNAME/Documents/htdocs"

Directory …

<Directory "/Applications/XAMPP/xamppfiles/htdocs">

ändern in

<Directory "/User/USERNAME/Documents/htdocs"> 

und

<IfModule !mpm_netware_module>
    User nobody
    Group nogroup
</IfModule> 

ändern in

<IfModule !mpm_netware_module>
    User USERNAME
    Group nogroup
 </IfModule> </blockquote>

nochmal vielen Dank an crashsource.de für den Hinweis

TYPO3 interne Suche für Datensätze

In der Listen bzw. Seitenansicht gibt es ja ganz unten eine Suche um nach Elementen zu suchen. Bis zur Version 4.6 konnten alle Datensätze von Extensions damit gesucht und gefiltert werden. Jetzt muss in der Extension selbst jedoch eine Liste hinterlegt werden, welche Felder durchsucht werden sollen. Ansonsten verläfut die Suche ins Leere.
Da ich gerade über diesen Punkte gestolpert bin und die Suche in eigenenen Extensions nicht mehr nutzen konnte habe ich Google bemüht mir da mal einen Tipp zu geben. Gesucht, gefunden und nun lieber hier notieren bevor ich es wieder vergesse.
Fündig wurde ich bei Stackoverflow , ext_tables.php öffnen und das ‚ctrl‘ Array wie folgt anpassen, cache löschen und sich in hunderten von Datensätzen wieder zurecht finden.

$TCA['tx_yourext_table'] = array(
    'ctrl' => array(
        'title' => 'Title of your table',
        'label' => 'title',
        'tstamp' => 'tstamp',
        'crdate' => 'crdate',
         // etc...
        'searchFields' => 'title, other_field, yet_other_field',
    ),
);

git befehle

Eine kleine Zusammenfassung für mich an git Befehlen:


git clone - "erstmailges kopieren des Repos"
git push - "hochladen"
git push -u origin master - '-u git merkt sich die übergebenen Parameter'
git pull - "Änderungen runterladen"
git diff - 'Änderungen ansehen'
git diff --staged - 'Nur Änderungen aus dem Stage bereich'
git reset - 'staged filed entfernen, wird aber nicht gelöscht'
git checkout --[space] - 'Alle Änderungen seit dem letzten Commit verwerfen'
git rm - 'Files werden gelöscht und gleichzeitig dem Staging Bereich "mitgeteilt", das Dateien gelöscht wurden' -> danach noch commiten

Branch:
git branch - 'anlegen eines Branches'
git checkout - 'switch zu anderem Branch'
git merge - 'Um änderung aus einem anderen Branch zu übernehmen, bsp: bugfix integrieren'
git branch -d - 'branch löschen, bsp: nach erfolgreichem Bugfix'

Source
http://try.github.com/

Cygwin Aliase

Ich bin mittlerweile großer Fan von Cygwin unter Windows geworden denn damit kann ich auf viele kleine Tools aus der Linux Welt zurückgreifen.
Um direkt auf per Shell dann direkt auf meine Partitionen zugreifen zu können nutze ich immer das folgende Skript von Thomas Gern.

  #!/bin/bash
  ############################################################
  # alias 

  for drive in a b c d e f g h i j k l m n o p q r s t u v w x y z
  do
          alias ${drive}:="cd /cygdrive/${drive}"
  done

Quelle:
http://www.pro-linux.de/artikel/2/128/eine-cygwin-umgebung-unter-windows-einrichten.html

Fehler in Standard-Installation von Xampp + XDEBUG unter Windows

Die Fehler die einem begegnen sind meist die größte Quelle des Ansporns und wenn man Sie gelöst hat bleiben die Lösung am längsten in Erinnerung.
Ein solcher Fehler hat mich nun fast zum verzweifeln gebracht. Ich wollte eigentlich nur einmal Webgrind ausprobieren und testen. „Webgrind is an Xdebug profiling web frontend in PHP5.“ [1] Um es also zu testen habe ich meine Xampp Installation gestartet und habe XDEBUG aktviert. Jedoch schien XDEBUG nichts zu laufen, da ich keine Profiling Datei erhielt. Nachdem ich nun mehrere Stunden mit dem Suchen nach Lösungen zu dem Problem verbracht habe und verschiedene Versionen von XDEBUG und XAMPP ausprobiert hatte, stellte sich raus das der Dateiname nicht korrekt ist.
In der Standard php.ini in XAMPP wird folgender Eintrag für den Dateinamen gesetzt.

xdebug.profiler_output_name = „xdebug_profile.%R::%u“

Allerdings enthält dieser Dateiname zwei Doppelpunkte, die in Windows Dateinamen nicht erlaubt sind, eine Änderung zu
xdebug.profiler_output_name = „xdebug_profile.%R-%u“, reicht nun aus um endlich meine Profiling Dateien zu erhalten.

Ich denke mal in Zukunft werde ich jeden Ausgabenamen einer Log Datei oder irgendeiner anderen sonstigen Datei 3x prüfen um auch wirklich sicherzustellen, das nicht eine solche „Lappalie“ Grund für eine derartiges Rätselraten ist.

[1]
https://code.google.com/p/webgrind/