Phalcon-scaffolding-application

提供:Dev Guides
移動先:案内検索

Phalcon-足場アプリケーション

足場は通常、Webアプリケーションデータベースを指すコード生成のタイプを指し、基本的なCRUD(作成、読み取り、更新、削除)アプリケーションを作成します。

CRUDアプリケーションを設計する前に、アプリケーションのニーズに応じてデータベーステーブルを設計することが重要です。

  • ステップ1 *-すべてのcrud操作を含むスキャフォールディングアプリケーションを作成します。
Command: phalcon scaffold <table-name>

スキャフォールディング

Bolg-tutorial

実行されたPhalconのscaffoldジェネレーターは、次の表で説明するファイルとフォルダーを作成します。

スキャフォールドジェネレーター

  • ステップ2 *-インデックスページ(phtmlとvoltの組み合わせ)を作成します。

usersフォルダーのindex.phtmlに含まれるコード。

<?php use Phalcon\Tag as Tag ?>
<!DOCTYPE html>
<html>
   <head>
      <meta charset = "utf-8">
      <title>Blog Tutorial</title>
      <link rel = "stylesheet" type = "text/css"
         href = "http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrapcombined.min.css"/>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
   </head>

   <body>
      <div class = "navbar navbar-fixed-top">
         <div class = "navbar-inner">
            <div class = "container">
               <a class = "btn btn-navbar" data-toggle = "collapse" datatarget = ".nav-collapse">
                  <span class = "icon-bar"></span>
                  <span class = "icon-bar"></span>
                  <span class = "icon-bar"></span>
               </a>
               <a class = "brand" href = "#">Blog Collection</a>

               <div class = "nav-collapse">
                  <ul class = "nav pull-left">
                     <li>
                        <?php echo Phalcon\Tag::linkTo('index', 'Home Page') ?>
                     </li>

                     <?php if ($this->session->has('auth')) { ?>
                        <li>
                           <?php echo Phalcon\Tag::linkTo('posts/index', '+Posts') ?>
                        </li>

                        <li>
                           <?php echo Phalcon\Tag::linkTo('categories/index', '+Categories') ?>
                        </li>

                        <li>
                           <?php echo Phalcon\Tag::linkTo('users/logout', 'Log out') ?>
                        </li>
                     <?php } else { ?>
                        <li>
                           <?php echo Phalcon\Tag::linkTo('users/index', 'Log in') ?>
                        </li>
                     <?php } ?>
                  </ul>
               </div>

            </div>
         </div>
      </div>
      <?php echo $this->getContent() ?>

      <script src = "http://netdna.bootstrapcdn.com/twitterbootstrap/2.2.1/js/bootstrap.min.js"></script>
   </body>
</html>

デフォルトファイル index.volt には次のコードが含まれます。

<?php echo $this->getContent() ?>

<div align = "center">
   <h1>Welcome!</h1>
   <p>Welcome to the blog collection of Phalcon</p>
</div>

上記のコードが正常に実行されると、次の出力が生成されます。

上記のコード出力

  • ステップ3 *-それぞれのモデルで変更します。

Users.php

<?php

class Users extends \Phalcon\Mvc\Model {
  /* *
     * @var integer
 *
  */

   public $id;
  /* *
     * @var string
 *
  */

   public $login;
  /* *
     * @var string
 *
  */

   public $password;
  /* *
     * Initializer method for model.
   */

   public function initialize() {
      $this->hasMany("id", "Posts", "users_id");
   }
}
*'initialize'* という名前の関数は、Postsテーブルでidとusers_idの関係を実装するのに役立ちます。つまり、一意の各ユーザーはテーブルに関連付けられた多くの投稿を持っています。

Posts.php

<?php

class Posts extends \Phalcon\Mvc\Model {
  /* *
     * @var integer
 *
  */

   public $id;
  /* *
     * @var string
 *
  */

   public $title;
  /* *
     * @var string
 *
  */

   public $slug;
  /* *
     * @var string
 *
  */

   public $content;
  /* *
     * @var string
 *
  */

   public $created;
  /* *
     * @var integer
 *
  */

   public $users_id;
  /* *
     * @var integer
 *
  */

   public $categories_id;
  /* *
     * Initializer method for model.
      */

   public function initialize() {
      $this->belongsTo("users_id", "Users", "id");
      $this->belongsTo("categories_id", "Categories", "id");
   }
}

関数「初期化」には、テーブルとの外部キーと主キーの関係を示す関係制約が含まれます。

*users_id* は、「Users」テーブルのIDを指します。
*categories_id* は、「カテゴリ」テーブルのIDを参照します。

Categories.php

<?php

class Categories extends \Phalcon\Mvc\Model {
  /* *
     * @var integer
 *
  */

   public $id;
  /* *
     * @var string
 *
  */

   public $name;
  /* *
     * @var string
 *
  */

   public $slug;
  /* *
     * Initializer method for model.
   */

   public function initialize() {
      $this->hasMany("id", "Posts", "categories_id");
   }
}

ユーザーモデルと同様に、「初期化」関数は、指定された投稿の多くの *categories_id を含むことを指定します。

リンク:/phalcon/phalcon_designing_login_page [ログインページの設計]

ビューを作成する

以下は、Blog-tutorial-masterプロジェクトの完全な構造です。

完全な構造

ユーザーが正常にログインした後にホームページを表示するための関連ビューは*“ index.phtml” *です。

<?php use Phalcon\Tag as Tag ?>
<!DOCTYPE html>
<html>
   <head>
      <meta charset = "utf-8">
      <title>Blog Tutorial</title>
      <link rel = "stylesheet" type = "text/css" href = "http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrapcombined.min.css"/>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1.0">
   </head>

   <body>
      <div class = "navbar navbar-fixed-top">
         <div class = "navbar-inner">
            <div class = "container">
               <a class = "btn btn-navbar" data-toggle = "collapse" datatarget = ".nav-collapse">
                  <span class = "icon-bar"></span>
                  <span class = "icon-bar"></span>
                  <span class = "icon-bar"></span>
               </a>
               <a class = "brand" href = "#">Blog Collection</a>

               <div class = "nav-collapse">
                  <ul class = "nav pull-left">
                     <li>
                        <?php echo Phalcon\Tag::linkTo('index', 'Home Page') ?>
                     </li>
                     <?php if ($this->session->has('auth')) { ?>
                        <li>
                           <?php echo Phalcon\Tag::linkTo('posts/index', '+Posts') ?>
                        </li>

                        <li>
                           <?php echo Phalcon\Tag::linkTo('categories/index', '+Categories') ?>
                        </li>

                        <li>
                           <?php echo Phalcon\Tag::linkTo('users/logout', 'Log out') ?>
                        </li>
                     <?php } else { ?>
                        <li>
                           <?php echo Phalcon\Tag::linkTo('users/index', 'Log in') ?>
                        </li>
                     <?php } ?>
                  </ul>
               </div>

            </div>
         </div>
      </div>
      <?php echo $this->getContent() ?>
      <script src = "http://netdna.bootstrapcdn.com/twitterbootstrap/2.2.1/js/bootstrap.min.js"></script>
   </body>
</html>

リンク:/phalcon/phalcon_category_management [カテゴリ管理]