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のメモでした。
PHPでXMLのAPIをちまちま叩かなくても、RDFを直接扱えるライブラリがあるみたい。
携帯電話ブラウザとFOAF, RSS -ちょっとしたメモ The WEB KANZAKI-これらはRAP (RDF API for PHP)の実験も兼ねてつくったもの。RAPはRDF処理のための強力かつ使いやすいツールなので、いずれ改めて紹介してみたい。
PHPでRDF使うのにはLAND HERE BLOGでも苦労してたみたいだけど、これなら楽に扱えるのではないだろうか。
PHP5で使えるかとかは未確認だけど。
以下、RAPを使った例
RDF/XMLの構文チェックと、グラフ視覚化のテストです。日本語も表示可能です。RAP - RDF API for PHPのパーサーとGraphviz呼び出しツールを利用しています。
以下、RAPのサイト
RAP is a software package for parsing, searching, manipulating, serializing and serving RDF models.
quickformのこと探すときはここ見ることにしたので、マニュアルへのリンクを貼っておきます。
導入 - 検証およびフィルタ -- 送信されたデータを処理する方法
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
ajaxでは他所から直接RSSとか引っ張ってこれないから、phpでwrapper書くときはこんな感じ。
<?php header('Content-type: text/xml; charset=UTF-8'); echo file_get_contents($_REQUEST['url']); exit; ?>