19

Click here to load reader

Symfony2 workshop-1

Embed Size (px)

DESCRIPTION

日本Symfonyユーザー会 第1回Symfony2勉強会 Symfony2基礎編

Citation preview

Page 1: Symfony2 workshop-1

Symfony2ワークショップ#1

Symfony2ワークショップ

#1

日本Symfonyユーザー会 後藤 秀宣(@hidenorigoto)

Page 2: Symfony2 workshop-1

Symfony2ワークショップ#1

ワークショップの内容● サンドボックスを動かす● Symfony2のディレクトリやファイルの構成それぞれの役割概観

● アクションやビューを作ってみる● Twigを使ってみる

Page 3: Symfony2 workshop-1

Symfony2ワークショップ#1

 ● 参考ドキュメントURLhttp://docs.symfony-reloaded.org/master/http://www.twig-project.org/

ドキュメントのURLは要注意です

Page 4: Symfony2 workshop-1

Symfony2ワークショップ#1

ではさっそく始めましょう!

準備OK?

Page 5: Symfony2 workshop-1

Symfony2ワークショップ#1

サンドボックス環境の準備(10分)● git://github.com/symfony/symfony-sandbox.git● Git環境がない方→~~~~

● USBメモリでも配布しています● http://localhost/symfony-sandbox/web/app_dev.php/hello/fabien

● $ php app/console

動いた方は、プロファイラーやエラーページを見てみてください

Page 6: Symfony2 workshop-1

Symfony2ワークショップ#1

ディレクトリやファイル(10分)● web● app● src

Page 7: Symfony2 workshop-1

Symfony2ワークショップ#1

アクションやテンプレート(5分)● HelloControllerにtestActionを追加

→src/Appliction/HelloBundle/Controller HelloController.php

● テンプレートファイルを追加 →src/Appliction/HelloBundle/Resources/views /Hello/test.php

● ルートの追加 →src/Appliction/HelloBundle/Resources/config routing.yml         ↓

http://localhost/symfony-sandbox/web/app_dev.php/hello/test

Page 8: Symfony2 workshop-1

Symfony2ワークショップ#1

テンプレートの継承(PHP)app/views/ -

src/Application/HelloBundle/Resources/ views/ -

Hello/ -

-

layout.php

layout.php

index.php

test.php

Page 9: Symfony2 workshop-1

Symfony2ワークショップ#1

テンプレートの継承(PHP)app/views/ -

src/Application/HelloBundle/Resources/ views/ -

Hello/ -

-

layout.php

layout.php

index.php

test.php

testActionrender()

Page 10: Symfony2 workshop-1

Symfony2ワークショップ#1

テンプレートの継承(PHP)app/views/ -

src/Application/HelloBundle/Resources/ views/ -

Hello/ -

-

layout.php

layout.php

index.php

test.php

_contentスロット

_contentスロット

testActionrender()

Page 11: Symfony2 workshop-1

Symfony2ワークショップ#1

テンプレートの継承(PHP)app/views/ -

src/Application/HelloBundle/Resources/ views/ -

Hello/ -

-

layout.php

layout.php

index.php

test.php

_contentスロット

_contentスロット

testActionrender()

レンダリング結果

Page 12: Symfony2 workshop-1

Symfony2ワークショップ#1

ビューでのヘルパーいろいろ(5分)● ビュー内で $view 変数経由

 → echo get_class($this) → echo get_class($view)

共通メニュー用のビューを作って埋め込む →Resources/views/menu.php

Page 13: Symfony2 workshop-1

Symfony2ワークショップ#1

(共通メニューを埋め込む)● Resources/views/layout.php $view->render() で埋め込む

symfony 1の「パーシャル」相当の機能

Page 14: Symfony2 workshop-1

Symfony2ワークショップ#1

他のヘルパー(10分)● スロット(スロットヘルパー)app/views/layout.php

● 【スロットへの値の設定】

$view['slots']->start('title')$view['slots']->end()

Page 15: Symfony2 workshop-1

Symfony2ワークショップ#1

actionsヘルパー● テンプレートに特定のアクションのレンダリング結果を埋め込む

symfony 1の「コンポーネント」相当の機能

Page 16: Symfony2 workshop-1

Symfony2ワークショップ#1

ヘルパーの実体はどこにある?(10分)● src/vendor/symfony/src/symfony/ Bundle/FrameworkBundle Resources/config/templating.xml Templating/Helper ActionsHelper.php : Component Templating/Helper AssetsHelper.php :

Page 17: Symfony2 workshop-1

Symfony2ワークショップ#1

Twigを使う(10分)● 設定の有効化 app/config/config.ymlでコメントを解除 app/AppKernel.phpでバンドルのコメントを解除

● アクションのレンダリング部分で拡張子を変更

Page 18: Symfony2 workshop-1

Symfony2ワークショップ#1

Twigの機能いろいろ● {% include "HelloBundle::menu.php" %}{% render "HelloBundle:Hello:test" %}{% block title %}タイトルだよ{% endblock %}{% if users %} <ul> {% for user in users %} <li>{{ user.username }}</li> {% endfor %} </ul>{% endif %}

Page 19: Symfony2 workshop-1

Symfony2ワークショップ#1

続きは・・・● 2次会や、Symfony Midnightで! もしくは各自で復習してください!

● 分からないことは、Symfonyユーザー会MLへ もしくはtwitter #symfony_jaへ