メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

【FuelPHP】フォームの作成に関する記事その3 Fieldset

fuelphp1

前回に引き続き、フォームの作成に関する記事3ということで
続きを書いていきます。

前回までで、個別にフォームを作成する場合と、
バリデーションについて書いていきました。

実は、フォームの生成とバリデーションを一緒にできる方法があるので、
それについて書いていきたいと思います。

オブジェクト指向風のフォーム作成方法


さっきも書いたのですけど、Fieldsetはフォームをオブジェクト指向風に作成することが出来ます。
例えば、こういう風に記述した場合には

こんな感じで書いて
Viewsにset_safeで設定した変数を呼び出すと

フォームの属性をナントカしたい場合は場合はこうやります。

inputの作成方法はaddメソッド


fieldsetクラスに書いてあるメソッドです。
フォームに対して、属性やバリデーションの設定をすることができます!

作成したinputの編集をするにはfieldメソッド


さっきの工程を行う事により、呼び出したオブジェクトに、
inputタグを登録というか追加することができます。
でも、あ、やっぱし編集したいとかあると思います。
そんな時にfieldが役に立ちます。

これでtextboxで作った奴が、checkboxに変更されました!

選択肢が複数ある場合選択肢を設定できる


コンボボックスやチェックボックスやラジオボタン作る場合には
optionsを設定することで、選択肢を指定できます。

optionsの値に入れた配列が選択肢として出力されます。
後でoptions追加するならこうなります。

バリデーションルールを追加する


バリデーションルールを追加するにはadd_ruleメソッドを使います。
これも同じ感じで、$obj->add_ruleって感じで使っていきます。

こんな感じになります。

モデルのフィールドをinputタグとして使う場合


モデルをフォームにそっくりそのまま作り変えることもできます。
Fieldset::forgeする際にadd_modelメソッドを呼び出す事で可能になります。

この後でbuildすれば、モデルの内容がフォームとして出力されます。

モデルにフォームのタイプを設定する


モデルの配列の中に設定します。コードにコメント入れる形で見ていきます。

こんな感じで、作成されているモデルや、作成したモデルに追加していく形になります。
選択肢がある場合だとこういう風になります。
typeをchekboxやradioにすると、そのようにフォームが変わります。

optionsもこんな感じで設定することができます。
textareaはこう設定します。

バリデーションの設定


バリデーションもモデルに設定することができます。

validationの中に設定したバリデーションを入れると、
そのバリデーションが実行されます。ちょっとややこしい奴もできます。

こんな感じで正規表現もできたりします。

バリデーションの一覧は公式に詳しく載っていたりします。
ルール表を参考にしてください。

add_modelする際に編集したいものがある時


・fieldメソッドを使って、フォームの追加したり削除する
・fieldメソッドを使ってバリデーションを追加したり削除したりする

こんな感じでmodelからフォームを作成した場合には
$obj->fieldとか$obj->addとかが便利になります。

動いてるコード


自分が書いて動いてるメソッドを取り出してみます。

ポイント

・バリデーションはrunメソッドを呼び出して真偽判定する
・repopulateメソッドで、ユーザーが入力した内容を覚えさせておく(入力しなおしの際のストレス軽減)
・show_errorsメソッドを使う事で、エラーを記憶させる事ができる

とまぁ、気がついたら長くなってしまいましたが、
今回もお付き合い頂いて下さった方、どうもありがとうございました。

関連記事

  1. PHPサムネイル
  2. PHPサムネイル
  3. PHPサムネイル
  4. PHPサムネイル

コメントをお待ちしております