Phalcon-scaffolding-application
提供:Dev Guides
Phalcon-足場アプリケーション
足場は通常、Webアプリケーションデータベースを指すコード生成のタイプを指し、基本的なCRUD(作成、読み取り、更新、削除)アプリケーションを作成します。
CRUDアプリケーションを設計する前に、アプリケーションのニーズに応じてデータベーステーブルを設計することが重要です。
- ステップ1 *-すべてのcrud操作を含むスキャフォールディングアプリケーションを作成します。
Command: phalcon scaffold <table-name>
実行された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 [カテゴリ管理]