Die Diskussionen zu Pro und Contras sogenannter Template Engines in PHP scheinen kein Ende zu nehmen. Hier eine kleine Sammlung, die fortgeführt werden könnte.
Links zu Template Engines:
Zum Vervollständigen der Liste bitte die Kommentarfunktion nutzen. Beitrag wird ständig überarbeitet.
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:
Fertig!
Letzte Kommentare