Integration Zend Framework 1.10
Yii::import('application.vendors.*'); require_once 'Zend/Loader/Autoloader.php'; Yii::registerAutoloader(array("Zend_Loader_Autoloader", "autoload"));
Yii::import('application.vendors.*'); require_once 'Zend/Loader/Autoloader.php'; Yii::registerAutoloader(array("Zend_Loader_Autoloader", "autoload"));
Manchmal lohnt sich ein Blick in die aktuelle Entwicklung des Yii Frameworks.
Es läßt sich zum Beispiel erkennen, dass Version 1.0.10 kurz vor der Tür steht. Aufgefallen ist mir auch eine kleine Funktion, die neue Autoloader registriert.
So wäre die Integration des Zend Frameworks in Yii ein Zweizeiler.
Yii::import("application.vendors.*"); Yii::registerAutoloader(array("Zend_Loader", "registerAutoload"));
Es ist Sonntag. Zeit, mal wieder in den Briefkasten zu schauen, und siehe – ES IST DA: Das Zend Framework Poster der Mayflower GmbH. Ein Foto konnte ich auf die Schnelle nicht machen, aber das Ding ist riieesig!
Es ist auf dem Stand der Version 1.8.0 und behandelt die Bereiche:
Eine feine Sache. Danke Mayflower!
Hier hab ich erklärt, wie man generell mit Zend_XmlRpc einen Wordpress Post erzeugt.
In diesem Beitrag bauen wir uns ein kleines Tool mit dem Yii-Framework, welches mit Hilfe der Zend Komponenten einen Blogeintrag erzeugt. Wir brauchen ein Formular, welches wir mit Yii bauen und eine Action, welche das Formular verarbeitet. zusätzlich wollen wir das Formular noch durch einen Login schützen. Das Ganze ist wirklich nicht viel Arbeit, wie hoffentlich gleich zu sehen sein wird.
Der Weg ist folgender:
Ok, ich hab das Erstellen der Applikation mal ge-outsourced, dieses Wissen könnte bereits vorhanden sein, es ist ja nur ein einfacher Befehl auf der Konsole.
Im Ordner protected/models legen wir nun eine Datei mit dem Namen TestForm.php an mit folgendem Inhalt:
class TestForm extends CFormModel { public $title; public $description; public function rules() { return array( array('title, description', 'required') ); } }
Im Ordner protected/views nun eine Datei namens test.php
<div class="yiiForm">
<?php echo CHtml::beginForm(); ?>
<?php echo CHtml::errorSummary($form); ?>
<div class="simple">
<?php echo CHtml::activeLabel($form,'title'); ?>
<?php echo CHtml::activeTextField($form,'title'); ?>
</div>
<div class="simple">
<?php echo CHtml::activeLabel($form,'description'); ?>
<?php echo CHtml::activeTextArea($form,'description',array('rows'=>6, 'cols'=>50)); ?>
</div>
<div class="action">
<?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php echo CHtml::endForm(); ?>
</div>Und in der Datei protected/controllers/Sitecontroller.php fügen wir eine zusätzliche Action ein:
public function actionTest() { $form = new TestForm(); if(isset($_POST['TestForm'])) { $form->attributes=$_POST['TestForm']; if($form->validate()) { Yii::import('application.vendors.*'); require_once 'Zend/XmlRpc/Client.php'; $client = new Zend_XmlRpc_Client('http://blog.mbischof.de/xmlrpc.php'); $username = 'username'; $password = 'password'; $content = array( 'title' => $form->title, 'description' => $form->description ); $result = $client->call('metaWeblog.newPost', array( 1, $username, $password, $content, true )); } } $this->render("test", array("form" => $form)); }
Die entsprechenden Zend Framework-Klassen müssen sich hierbei im Verzeichnis protected/vendors befinden.
Damit wir das ganze noch mit einem Login absichern, brauchen wir noch folgenden Code im Sitecontroller.
public function filters() { return array( 'accessControl', ); } public function accessRules() { return array( array('allow', 'actions'=>array('login','contact','index'), 'users'=>array('*')), array('allow', 'users'=>array('@')), array('deny', 'users'=>array('*')) ); }
Und so rufen wir das Ganze nun im Browser auf:
index.php?r=site/test
Fertig!
Ich möchte ein Bild hochladen mit dem Zend Framework, validieren und in einen User-Ordner verschieben. Zend_Form hilft:
class UserUploadForm extends Zend_Form { private $_userid = null; public function __construct($userid){ $this->_userid = $userid; parent::__construct(); } public function init(){ $this->setName('uploadForm'); $this->setAttrib('enctype', 'multipart/form-data'); $image = new Zend_Form_Element_File('image'); $image ->setLabel('Lad dein Foto hoch') ->setRequired(true) ->addValidator('Count', false, 1) ->addValidator('Size', false, 102400) ->addValidator('Extension', false, 'jpg,png,gif') ->addFilter('Rename', array( 'target' => MY_APP_PATH . "/userfiles/" . $this->_userid . "/", 'overwrite' => true ) ); $submit = new Zend_Form_Element_Submit('submit'); $submit->setAttrib('id', 'submitbutton'); $this->addElements(array($image, $submit)); } }
Da mein letzter Beitrag ja von flickr erzeugt wurde, habe ich mich gefragt, wie man selber Wordpress-Artikel erzeugen kann über diese xml-rpc-Schnittstelle.
Eigentlich ist das ganz einfach, wenn man von Zend die XmlRpc-Komponente benutzt. Vorraussetzung ist, dass Wordpress die Kommunikation per xml-rpc zuläßt, was man in den Einstellungen festlegen kann.
require_once 'Zend/XmlRpc/Client.php'; $client = new Zend_XmlRpc_Client('http://blog.mbischof.de/xmlrpc.php'); $username = 'username'; $password = 'password'; $content = array( 'title' => 'Test', 'description' => 'Das ist nur ein Test'; ); $result = $client->call('metaWeblog.newPost', array( 1, $username, $password, $content, true )); var_dump($result);
Letzte Kommentare