Kohana-form:管理およびフォーム生成のモジュール

こんにちは。 この記事では、Djangoの同様のモジュールに触発されて作成したKohanaフレームワーク用のフォームモジュールを紹介します。



背景や考えを深く掘り下げることはせず、その点までまっすぐ進みます。 最初に、欠点について説明します。





利点:







カットの下の詳細。







使用方法:



フォーム作成



<?php defined('SYSPATH') OR die('No direct access allowed.'); class Form_Login extends Form { public static function meta() { return array( "fields" => array( "login" => Field::factory("Varchar"), "password" => Field::factory("Password"), ), "options" => array( //   .    . "valid_messages_file" => "login", //      ,     messages "theme" => "base" //  . base -   ,    2 : base, nolabels. nolabels    base    label ), ); } }
      
      







利用可能なフィールドタイプ







フォームの表示方法



見せて



  <form> <?php echo $form; ?> <input type="submit" value="Add"/> </form>
      
      







ブートストラップスタイルで表示する



  <form method="POST" role="form"> <?php foreach ($form as $field): ?> <div class="form-group"> <?php $field->css_class(array("form-control")); ?> <?php foreach ($field->errors() as $error): ?> <div class="alert alert-danger"> <?php echo $error; ?> </div> <?php endforeach; ?> <?php echo $field; ?> </div> <? endforeach; ?> <input type="submit" class="btn btn-primary" value="Add"/> </form>
      
      







モデルフォームを作成する



 class Form_Article extends ModelForm { public static function meta() { return array( "fields" => array( //  .    ,   . "image" => Field::factory("Image") ), "options" => array( "model" => ORM::factory("Article"), //       "display_fields" => array("title", "body", "image"), //  "valid_messages_file" => "news", //     "except_fields" => array() //      ), ); } }
      
      







データベース内の特定のエンティティのフォームを作成します



 Form::factory("Article", array(), $id);
      
      







特定のデータセット用のフォームを作成する



 Form::factory("Article", array("title" => "Hello, Habr!"));
      
      







モデルフォームを取得して保存する



 public function action_add() { if ($this->request->method() == "POST") { $form = Form::factory("Article", $this->request->post()); $form->add_field( Field::factory("Hidden") ->name("user") ->value(Auth::instance() ->get_user()) ); if ($form->validate()) $form->save(); } }
      
      







フォームセットを作成する



 <?php defined('SYSPATH') OR die('No direct access allowed.'); class Formset_News extends Formset { public static function meta() { return array( "base_form" => "News", "theme" => "bootstrap" ); } }
      
      







FormsetはIteratorも実装しているため、各要素に簡単にアクセスできます。



要するに、これは現在実装されているすべての機能です。 当然、コードのクリーンさの点と他のいくつかの面の両方に欠点があります。 そして、ここでこのモジュールを公開することで、オープンソースコミュニティが対応し、共同の努力により、Kohanaフレームワークの下でフォームを操作するための適切なモジュールを最終的に作成できることを願っています。



すべてのコードはgithub- kohana-formで利用できます。フォークを作成し、プルリクエストを送信し、「Issues」に書き込むことができます。 私はコメントとアドバイスを喜んでいます。



All Articles