wie man das kohana unittest modul richtig einbindet um für seine applikation bzw. module ein taugliches testframework zu haben, ist hier blog.lysender.com trefflich beschrieben.
Kategorie: Frameworks
um den output type einer agavi action auch nach dem routing zu ändern, kann man innerhalb der action den output type überschreiben.
/** * assume that 'html' is the standard GET output for this action * when this action is called via POST you want to change the output type to 'json' * because on error or success you want to show small messages per json instead full html */ public function executeRead(AgaviRequestDataHolder $rd) { return 'Input'; } public function executeWrite(AgaviRequestDataHolder $rd) { $this->getContainer()->setOutputType($this->getContext()->getController()->getOutputType('json')); try { // do POST stuff } catch(Exception $e) { $this->setAttribute('message', $e->getMessage()); return 'Error'; } return 'Success'; }
unter dieser url findet ihr nützliche kohana module, die euch jede menge arbeit abnehmen können.
webpiraten opensource auf github hat ein neues repo für den xgchunker als kohana 3 modul.
er konvertiert riesige csv/xml dateien in kleine chunks als StdClass objekt, um sie dann weiter zu verarbeiten.
webpiraten auf github
endlich haben die webpiraten auch ihre opensource repos bei github am start.
Das Kohana 3 Cheat Sheet
kohana twitter api modul
Das Kohana Twitter API Modul macht es einem sehr einfach Twitter in seine Applikationen einzubeziehen.
Um in Agavi custom logfiles zu erstellen, benötigt man einen eigens erstellten logger + appender in der app/config/logger.xml.
<!-- logs only custom messages in a custom log --> <logger name="custom" class="AgaviLogger" level="'custom'"> <appenders> <appender>CustomLogAppender</appender> </appenders> </logger> <appender name="CustomLogAppender" class="AgaviFileLoggerAppender" layout="DateTimeLayout"> <ae:parameters> <ae:parameter name="file">%core.app_dir%/log/custom.log</ae:parameter> </ae:parameters> </appender>
Dann kann man den Logger quasi überall wo der LoggerManager verfügbar ist benutzen.
$message = 'Custom logging message'; $this->getContext()->getLoggerManager()->log(new AgaviLoggerMessage($message, 'custom'), 'custom');
Und in der bash das logfile einsehen.
tail -f app/log/custom.log
Agavi routing specials
Um bestimmte Agavi output_types bei speziellen routings zu bedienen kann man die routing.xml wie folgt anpassen.
<!-- cut out leading slash --> <route name="slasher" pattern="^/" stop="false" imply="true" cut="true" /> <!-- match ajax calls with special http header --> <route pattern="XMLHttpRequest" source="_SERVER[HTTP_X_REQUESTED_WITH]" stop="false" output_type="ajax" /> <!-- match json calls with special http header --> <route pattern="application/json" source="_SERVER[HTTP_ACCEPT]" stop="false" output_type="json" /> <!-- cut out special pointer --> <route name="portal" pattern="^({portal:[a-zA-Z]{3}}/)?" stop="false" imply="true" cut="true"> <callbacks> <callback class="RoutingCallback" /> </callbacks> </route>
PDF Dokumente mit Zend LiveDocx
Ein sehr interessanter Ansatz zur Erzeugung von Dokumenten im Web wird bei phphatesme.com beschrieben. HTML-zu-PDF-Konvertierung und programmatischer Ansatz sind ja bekannt. Der neue Ansatz bedient sich einer SOAP Schnittstelle und Templates. Unter folgender URL gibts mehr dazu: