quickformでPOSTされてない値をvalidateするには

quickformでPOSTされてない値をquickformで扱うには、quickformを作る前に$_POSTに代入すべし

<?php
class FormTestAction extends Action
{
    function execute (&$controller, &$request, &$user)
    {
        $_POST['test'] = "def";

        $form = new HTML_QuickForm('me', 'post', '', '', 'enctype="multipart/form-data"');
        //$form->setDefaults(array("test"=>"abc"));

        $obj = $form->addElement('text', 'test');
        $form->addRule('test','input','required');

        $form->addElement('submit');
        $form->addElement('hidden', 'module', 'Admin');
        $form->addElement('hidden', 'action', 'FormTest');

        $form->validate();
        $form->display();
    }
}
?>

ここ。こうするとvalidateで値が評価される。

        $_POST['test'] = "def";
        $form = new HTML_QuickForm('me', 'post', '', '', 'enctype="multipart/form-data"');

PHPでRDF読み込み

以下RAPのメモでした。

PHPXMLAPIをちまちま叩かなくても、RDFを直接扱えるライブラリがあるみたい。
携帯電話ブラウザとFOAF, RSS -ちょっとしたメモ The WEB KANZAKI-

これらはRAP (RDF API for PHP)の実験も兼ねてつくったもの。RAPはRDF処理のための強力かつ使いやすいツールなので、いずれ改めて紹介してみたい。

PHPRDF使うのにはLAND HERE BLOGでも苦労してたみたいだけど、これなら楽に扱えるのではないだろうか。
PHP5で使えるかとかは未確認だけど。

というか、XMLAPI使うにしても、DOMは止めておいた方がいいような…。
判り易いけど、重すぎ。

以下、RAPを使った例

RDF/XMLの構文チェックと、グラフ視覚化のテストです。日本語も表示可能です。RAP - RDF API for PHPのパーサーとGraphviz呼び出しツールを利用しています。

以下、RAPのサイト

RAP is a software package for parsing, searching, manipulating, serializing and serving RDF models.

registerRuleのサンプルコード

<?php
/**
 * email アドレスを検証します
 *
 * @param string    $email         検証する Email アドレス
 * @param boolean   $domainCheck   ドメインの存在をチェックするかどうか
 */
function checkEmail($email, $domainCheck = false)
{
    if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
                   '\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
        if ($domainCheck && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);
            if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
                return true;
            }
            return false;
        }
        return true;
    }
    return false;
}
$form->registerRule('checkmail', 'callback', 'checkEmail');
$form->addRule('email', 'Email が不正です', 'checkmail', true);
?>

mojaviではregisterRuleするときにclass指定しないと動かなかった。

<?php
$form->registerRule('checkmail', 'callback', 'checkEmail', 'SomeClass');
?>

prototype.jsでいろいろ調べるためにメモッテイキマス。

http://www.prototypejs.org/
http://script.aculo.us/
prototype.jsチュートリアルとリファレンス。半月ほど触ってなくて、全く忘れたにも関わらず、また初歩からやり直したいときは備忘録というか、キーワード拾う感じで使ってる。
http://www.imgsrc.co.jp/~kuriyama/prototype/prototype.js.html