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」に書き込むことができます。 私はコメントとアドバイスを喜んでいます。

Source: https://habr.com/ru/post/J216187/


All Articles