top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_976

symfony:今日はワクワク。MVCモデルにダイブして、デザインに手を入れるぞ・・・ 【symfonyで、企業サイトを創る】

 2009-06-12
【前回】
symfony:あれからどうしたって!? 随分作業して環境も一新(Propel > Doctrine)・・・ 【symfonyで、企業サイトを創る】
 ・O/Rマッパを、Doctrine に変更し
 ・プロジェクトやアプリケーションの作成から
 ・schema.yml の作成 や
 ・モデルの作成
 ・フォームフレームワークの利用
 ・CRUDデータアクセス などを学んだ。

今日は、嬉し楽し、デザイン周りへの作業。
つまり
 ・MVCモデル へのダイブ! だ。


  追記に ▼(長文ご容赦)


※この連載は、はじめて「symfony」に取り組んだmetaboyが、
 いきなり、企業サイトをこれで創ってしまお、という企画。
 参考にするチュートリアルは、
 ◆Practical symfony | Web PHP Framework に加え、
 ◆DAY3: MVCアーキテクチャ : エクスギア Blog

FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎ symfonyで、企業サイトを創る:6回目
************************************************


 /*------------------------------------------*/
  ●MVCモデル
 /*-------------------------------------------*/
   フレームワークでは、必須ですね。
   ・CakePHP でも
    ・app/controllers
    ・app/models
    ・app/views を組み合わせて、
    表示させる
    ・app/webroot
    という基本的な仕組みがありますね。
    ※命名規約がある程度厳格で、
     それがいいな、と思ったり
        やだな、と感じたり・・・


   さて、symfony
    ・コントローラ(Controller)
     | /apps/(アプリ)/modules/(モジュール)/actions/
     | ※モデルやビュー を結びつける
     | ・アクション
     |  (特定のページのコントローラ)
     |
     ├・モデル(model)
     | /lib/model/
     | ※データ操作に関するもの
     |
     └・ビュー(view)
       /apps/(アプリ)/modules/(モジュール)/templates/
       ※ページ表示に関する操作


    [ 資料 ]>第2章 - symfonyのコードを探求する


 /*------------------------------------------*/
  ●レイアウトを変更
 /*-------------------------------------------*/
   レイアウトは
    ・基本テンプレート
     ・全体共通なテンプレート、共有部分など
    ・コンテンツ部分のテンプレート
     ・固有のテンプレート
   の2重構造。このあたりも定番ですね。


   □デフォルトのレイアウトテンプレート確認
    /apps/(アプリ)/templates/layout.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<?php include_http_metas() ?>
<?php include_metas() ?>
<?php include_title() ?>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<?php echo $sf_content ?>
</body>
</html>
 ・・・非常にシンプル。
    ・head 内は3つの 共有部品が組み込まれ
    ・body は、<?php echo $sf_content ?>
     で、個々のコンテンツが入り込むわけだ。

   □スタイルシートをヘルパ関数で読み込む


    ※チュートリアルに従い、
     /web/css/main.css
     /web/css/layout.css を用意。
use_stylesheet('スタイルシート名')
 で組み込める。 ▼
	<head>
<?php include_http_metas() ?>
<?php include_metas() ?>
<?php use_stylesheet('main') ?>
<?php use_stylesheet('layout') ?>
<?php include_title() ?>
 ・・・こうなる。
    [ 参考 ]ここで利用するそれぞれのCSSファイルは
     本家で利用されている下記をひとまずお借りした。
   ・http://svn.askeet.com/trunk/web/css/main.css
   ・http://svn.askeet.com/trunk/web/css/layout.css

   □体裁を整える
    ※あくまでもチュートリアルは参考、として
     自分なりにどんどん手を加えてゆく


    □DocType宣言の修正


     ・この「創るmeaboy」でトライした、HTML-lint
      で100点とるプロジェクト
      のときに学んだソース
     (同じ、XHTML 1.0 Transitional だけど)
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
 ・・・こうしたい。
    [ 回避 ]ただ、単純にこうはできない。
      <?xml がパースエラー となってしまう。
      パースエラー となってしまう
     そこで、これを回避。
<?xml version="1.0" encoding="utf-8"?>
 ・・・の部分を
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; ?>
 ・・・とする(OK)。

    □<body>~</body> 部分


     ・チュートリアルでの、CSSボックス構造は
      一応そのまま同じにするけど
      今まで得た知識の部分は、変えていかなきゃ・・・
<div class="verticalalign"></div>

      ・<div></div> は、空のまま
       では、駄目なのだ(HTML-lint)。
    [ 回避 ]よく使う1ドット透明画像をはさむ。
      まだ、学んだわけではないが、
      画像を配置するのは、チュートリアルにある
image_tag('askeet_logo.gif', 'alt=askeet')
 ・・・の部分のようだ。
    [ 資料 ]>The Definitive Guide to symfony 1.2(PDFファイル)
      この PDFファイルは必ず取得しておくべきだろう。
      最新:2009年5月25日のもので、非常に有用。
      ※こちらの 211頁に、
       image_tag()stylesheet_tag()javascript_include_tag()
       の、詳しい解説があった。
     で、
<div class="verticalalign"><?php echo image_tag('z.gif', 'alt_title=space size=1x1') ?></div>
 ・・・のように組み込んだ。
     ソースは
<img src="*****/images/z.gif" alt="space" title="space" height="1" width="1" />
 ・・・と生成されている。
      ・alt_title とすると、alt/title タグ両方に
       設定してくれる。
      ・本当は、この場合 altタグ名を空白にしたかったのだが。
      ※この仕組みを「アセットヘルパー」と
       呼ぶ様だ。(しかし、このPDFは素晴らしいぞ)

    □link_to( 部分


<?php echo link_to('about', '@homepage') ?>

     ・チュートリアル にある このlink_to(は
      ハイパーリンクヘルパー として上記PDFファイルの
      73頁,204頁 に解説がある。
      (※非常に多機能なようで、後に詳しく学びたい)
      まずは、概要の抜粋。
// link_to()ヘルパーは直接ハイパーリンクを出力し
// PHPとHTMLを混在させることを回避する
<?php echo link_to(
'ここをクリック',
'article/
permalink?subject=finance&year=2006&title=activity-breakdown') ?>
) ?>

// url_for()ヘルパーは内部URIを外部URLに変換する
<a href="<?php echo url_for('article/
permalink?subject=finance&year=2006&title=activity-breakdown') ?>">ここをクリック</a>

    併せて、チュートリアルのサンプルで出てくる
    ヘルパーの解説を簡単に確認しておく。


    □include_http_metas(),include_metas()
     include_title()


     ※PDF解説の 154頁 辺り
      ・view.yml の内容を組み込むわけだ。
       /apps/(アプリ)/config/view.yml
       デフォルトでは、
default:
http_metas:
content-type: text/html
metas:
#title: symfony project
#description: symfony project
#keywords: symfony, project
#language: en
#robots: index, follow
stylesheets: [main.css]
javascripts: []
has_layout: on
layout: layout
 ・・・となって
      タイトルとかがコメントアウトされてる。
       表示されるソースを見てみると
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="stylesheet" type="text/css" media="screen" href="*****/css/main.css" />
<link rel="stylesheet" type="text/css" media="screen" href="*****/css/main.css" />
<link rel="stylesheet" type="text/css" media="screen" href="*****/css/layout.css" />
</head>
 ・・・確かにタイトルが表示されていない。
       いづれ、チュートリアルで習うのだろう。

 /*------------------------------------------*/
  ●チュートリアルでの変更後
 /*-------------------------------------------*/
   レイアウトは
 チュートリアルでの変更後
   こんな感じだ。
   (お問い合わせ頁を想定して、創っている)


 いやぁ、面白いなぁ。
 この、symfony で、Doctrine を利用して
 書いてゆく方法。かなり、性に合うかも・・・

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/976-0f37f4ef
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。