compile_view form関連に対応


compile_view_1.1.12
をリリースしました。

対応タグは
a
checkbox
file
form
hidden
img
link
out
password
radio
script
select
text
textarea
の14個に。


ソースのリファクタリングも行い、
それぞれの変換をプラグイン的に追加できるようにしました。
views/compile/modules以下がそれ。
ファイル名=クラス名とし、
Translationクラスを継承し、transメソッドをオーバーライドすればOK。
modulesディレクトリ内は、Translation.php内のCompositeTranslationが
自動的に走査し読み込むため、変換クラス以外を置くとエラーになるので注意。
変換ができない(対象外など)場合はfalseを返せば、次の変換を試みるようになっている。
すべての変換ができなかった場合は、変換を行わず、HTMLをそのまま出力する。


それぞれの使い方。(phpdocそのまま)

  • aタグ変換

書式
<a href="path" param="param">
属性について(*は必須)
href*:パスを指定 頭文字が/以外の場合、変換処理は行われない
param:パスの後に変数を付加したい場合に指定。

ex:
<a href="/users/index/" param="$id" target="_blank" >

<a href="<?php echo $html->url("/users/index/" . $id); ?>" target="_blank" >


  • input type="checkbox" タグ変換

書式
<input type="checkbox" name="User/show" />
属性について(*は必須)
type*:タイプ指定 checkboxの場合のみこの処理が行われる
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<input type="checkbox" name="User/show" width="100" value="$val" />

<?php echo $html->checkbox("User/show", null, array("width" => "100", "value" => $val)); ?>


  • input type="file" タグ変換

書式
<input type="file" name="User/photo" />
属性について(*は必須)
type*:タイプ指定 fileの場合のみこの処理が行われる
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<input type="checkbox" name="User/photo" width="100" value="$val" />

<?php echo $html->checkbox("User/photo", array("width" => "100", "value" => $val)); ?>


  • formタグ変換

書式
<form action="path" >
属性について(*は必須)
action*:パスを指定 頭文字が/以外の場合、変換処理は行われない

ex:
<form action="/users/index/" method="post" >

<form action="<?php echo $html->url("/users/index/" . $id); ?>" method="post" >


  • input type="hidden" タグ変換

書式
<input type="hidden" name="User/photo" />
属性について(*は必須)
type*:タイプ指定 hiddenの場合のみこの処理が行われる
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<input type="hidden" name="User/id" />

<?php echo $html->hidden("User/id", array()); ?>


  • imgタグ変換

書式
<img src="path" />
属性について(*は必須)
src*:出力画像ファイル
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<image src="path" alt="sample" />

<?php echo $html->image("path", array("alt" => "sample", )); ?>


  • linkタグ変換

書式
<link href="path" />
属性について(*は必須)
href*:cssファイル ファイル名は必ず拡張子.cssが付いたものを指定してください。
その他の属性:すべて無視します。

ex:
<link href="main.css" />

<?php echo $html->css("main"); ?>


  • outタグ変換

書式
<out param="$param" filters="h,nl2br" />
属性について(*は必須)
param*:出力パラメータ 変数もしくは、cakephpの規約に基づいた名前を指定します。
変数を指定すると、通常の変数出力処理を行い、
規約に基づいた名前を指定すると、$html->tagValueメソッドを用い出力を行います。
filters:フィルタ h(htmlspecialchars)やnl2br等、
引数が1つだけの何らかの変換を行う関数であれば
どれでも指定できます。 複数指定する場合は,「カンマ」区切りで指定します。
デフォルトで"h,nl2br"が設定されます。
複数指定した場合、最初に指定したものから順に処理されます。
"h,nl2br"と指定した場合は、hが先に行われ、nl2brが後で行われます。
その他の属性:すべて無視します。

ex:
<out param="$param" />

<?php echo nl2br(h($param)); ?>

<out param="$param" filters="h,nl2br" />

<?php echo nl2br(h($param)); ?>

<out param="User/nickname" filters="h,nl2br" />

<?php echo nl2br(h($html->tagValue("User/nickname"))); ?>


  • input type="password" タグ変換

書式
<input type="password" name="User/pass" />
属性について(*は必須)
type*:タイプ指定 passwordの場合のみこの処理が行われる
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<input type="password" name="User/pass" value="$val" />

<?php echo $html->password("User/pass", array("value" => $val)); ?>


  • input type="radio" タグ変換

※このradioは1つで複数のradioを定義します。
書式
<input type="radio" name="User/kind" />
属性について(*は必須)
type*:タイプ指定 radioの場合のみこの処理が行われる
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
values*:値配列 それぞれの値と出力文字を指定。
指定は、連想配列変数もしくは、
compile_viewの書式に準する配列表記。
配列表記の場合は、"('値':'出力文字', '値2':'出力文字2')"とする。
また、値、出力文字共に<,>は指定不可。
selected:デフォルト選択 指定がない場合は、自動的にname属性で指定した名前をtagValueで指定します。
指定がある場合はそれに従い、値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<input type="rasio" name="User/kind" values="$vals" />

<?php echo $html->radio("User/kind", $vals, $this->tagValue("User/kind"), array()); ?>

<input type="rasio" name="User/kind" values="('k1':'v1', 'k2':'v2')" />

<?php echo $html->radio("User/kind", array('k1'=>'v1', 'k2'=>'v2'), $this->tagValue("User/kind"), array()); ?>



  • scriptタグ変換

※この変換を行う際は、コントローラの$helpersにjavascriptを追加する必要があります。
書式
<script src="path" />
属性について(*は必須)
src*:javascriptファイル "http"が含まれるファイルパスの場合、処理を行いません。
その他の属性:すべて無視します。

ex:
<script src="prototype.js" />

<?php echo $javascript->link("prototype.js"); ?>

  1. selectタグ変換

※このselectはoptionタグも共に定義します。
 また</select>は書かずに、<select name="User/kind" />と記述する必要があります。
書式
<select name="User/kind" />
属性について(*は必須)
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
values*:値配列 それぞれの値と出力文字を指定。
指定は、連想配列変数もしくは、
compile_viewの書式に準する配列表記。
配列表記の場合は、"('値':'出力文字', '値2':'出力文字2')"とする。
また、値、出力文字共に<,>は指定不可。
selected:デフォルト選択 指定がない場合は、自動的にname属性で指定した名前をtagValueで指定します。
指定がある場合はそれに従い、値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。
empty:未選択を表示するか? 指定がある場合で値が空もしくは"true"の場合のみ未選択を表示します。
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<select name="User/category" values="$vals" />

<?php echo $html->selectTag("User/category", $vals, $this->tagValue("User/category"), array(), false); ?>

<select name="User/category" values="('k1':'v1', 'k2':'v2')" />

<?php echo $html->selectTag("User/category", array('k1'=>'v1', 'k2'=>'v2'), $this->tagValue("User/category"), array(), false); ?>

<select name="User/category" values="$vals" empty />

<?php echo $html->selectTag("User/category", $vals, $this->tagValue("User/category"), array(), true); ?>

<select name="User/category" values="$vals" empty="true" />

<?php echo $html->selectTag("User/category", $vals, $this->tagValue("User/category"), array(), true); ?>



  • input type="text" タグ変換

書式
<input type="text" name="User/photo" />
もしくは
<input name="User/photo" />
属性について(*は必須)
type:タイプ指定 textの場合もしくは指定がない場合のみこの処理が行われる
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<input type="text" name="User/nickname" value="$val" />

<?php echo $html->hidden("User/nickname", array("value" => $val)); ?>

<input name="User/nickname" value="$val" />

<?php echo $html->hidden("User/nickname", array("value" => $val)); ?>



  • textareaタグ変換

※</textarea>は書かずに、<textarea name="User/plofile" />と記述する必要があります。
書式
<select name="User/plofile" />
属性について(*は必須)
name*:名前 cakephpの規約に順する名前の場合のみこの処理が行われる
その他の属性:値の頭文字が$の場合、それはphpの変数と判断し、処理を行います。

ex:
<textarea name="User/nickname" value="$val" />

<?php echo $html->textarea("User/nickname", array("value" => $val)); ?>