ラベル smarty の投稿を表示しています。 すべての投稿を表示
ラベル smarty の投稿を表示しています。 すべての投稿を表示

2011/03/08

smartyで九九

smartyで九九の表を作成

kuku.php
「../libs/Smarty.class.php」のパスは環境に合わせて調整が必要です。
<?php
/**
 * Smarty問題
 * 九々
 * kuku.php - kuku.tpl
 * @package smarty_lesson
 * @author
 * @since
 */

for ( $i = 1; $i <= 9; $i ++){
    for ( $j = 1; $j <= 9; $j ++){
        //2次元配列の作成
        $num[$i][] = $i*$j;
    }
}

require( "../libs/Smarty.class.php" );
$smarty = new Smarty();
$smarty -> assign( "num", $num );
$smarty -> display( "kuku.tpl" );

kuku.tpl
<html>
<body>
<table border = "1">
<caption>【九九の表】</caption>
<tr><th width="30"><br></th>
{for $j=1 to 9}
    <th width="70">
    {$j}
    </th>
{/for}
</tr>
{{foreach $num as $key1=>$row}}
    <tr>
    <th>{$key1}</th>
    {{foreach $row as $key2=>$col}}
        <td  align=center>{$key1}*{$key2+1} = {$col}</td>
    {/foreach}
    </tr>
{/foreach}
</table>
</body>
</html>

2011/03/07

smartyで掲示板

php講習 3/7 14週目

・掃除はなんと雪でお休みでした。
・今日までSmartyの予定でしたが、お休みが多い。
・今日は4時間です。さらに、今週は水曜日がお休み

<1時間目>
九九の表をsmartyで、今日はメールで送付しなくていい。
九九の表の解説、2次元配列に値を入れる仕組みについて。
smartyで、{foreach}を2重に記述する。(くわっちの例とは違うけど)
{{foreach $num as $key1=>$row}}
    
    {{foreach $row as $key2=>$col}}
        

テーブルタグ<tr><td>の位置に注意
ソースはメールで送付されました。
・BBSの続き
返信の出し方について、解説。
コメントの出力が出ている人は、返信の出し方について、九九の表を参考に。
テーブルを2つ使うときは、if文を使って条件判断をして出力する。

<2時間目>
・BBSの続き、デバック
(1)投稿のニックネームのリンクの表示がおかしい。テーブルタグは正しいが、表示のみ余分な文字列が付く。
<a href="www.yahoo.co.jp">smarty</a> さんの投稿<br />
→仕様? データにhttp://が付いていないとFirefoxが補完機能を働かせて?「http://localost/bbs_smarty/」を付ける
(2)返信のニックネームの表示に余分な文字が付く
→修正
(3)emailが表示されない。
→emailの保存/表示処理がない

・くわっちの一言:テンプレートで出力を確認する際は、一度に全てのカラムを表示させるのでは
なく、1つだけ表示して、うまくいったら他のカラムも表示する、という手順にしましょう。また、
IF文など、複雑な部分も一旦とっぱらって、後からにしましょう。

<3時間目>
・BBSの続き、デバック

<4時間目>
・BBSの解説
メールで資料が配布されているので、参照する。
パラメータを1つで渡す方法と、2つで渡す方法があります。
/imgフォルダの指定は、index.tplのhtmlタグで指定していますが、
index.phpからの相対パスで、index.tplからの相対パスではありません。
・comment.id = reply.comment_idの判断をどこでやるか。
phpで多次元配列を作り、テンプレートに渡す。
ロジックを書くのは、プログラマ。
デザイナには負担はかけないほうがいい。
・配布したソースでは、セッションの使い方など、今まで説明した機能はなるべく使っています。
smartyの書き方の参考にして下さい。

ごごは、すっかり雨もあがった。

今日は、くわっちの最後の日でした。

*サクラエディタでのphpの設定について

2011/03/04

smartyで掲示板

php講習 3/4

・掃除も花粉症でお休みしました。
 今日は目が異常にかゆい。
<1時間目>
・今日もsmartyでfizzbuzz
半分以上は出来るまで、毎日続く?

<2時間目>
・今日もsmartyでfizzbuzzと解説
smartyのif,elseifはphpと処理が逆になっています。
phpは上から順に処理されますが、smartyはヒットした条件で処理されるので、
書き方の順は逆になります。
・九九の表

<3-5時間目>
・BBSのindex.phpをsmartyで書き直す
2次元配列の2次元目を設定するところがわからなかった。
1次元での例からの応用が利かない。頭が固くなってます。
$row1['reply'][] = $row2;
・実習の間に、PCのメモリ増設作業がありました。
デスクトップはやったことあったけど、ノートは経験が無かったので、作業は
委員長にお願いしました。ありがとうございます。

<6時間目>
・BBSのsubmit.phpをsmartyで書き直す
作業の残りは、3/7(月)にやってください。
なお、月曜日は4時間です。

・smartyのテンプレートファイルをeclipseで書いていて不便だったので、
  せめて、htmlファイルとだけ関連付けしました。

2011/03/03

smarty講習

php講習 3/3

・掃除は花粉症でお休みしました。
今日は目が異常にかゆい。

<1時間目>

<2時間目>
・smartyでfizzbuzz、続き
 出来ない人は16時半以降続きを。。。
・smartyで、smartyクラスの継承
デリミタの変更
(デリミタ「{」「}」はjavascriptと競合する可能性があるので、そのままで使うことは
あまりないとのこと)
<3時間目>
・mysqlで環境設定
 DB作成
 Table作成
・DBのtableからデータを取得(今までの復習)
・配列変数でのデータ取得
・テーブルの行データ取得を2次元配列で扱う
行データは連想配列に入っているので、smartyでは、「.」(ドット)+「カラム名」で参照する。

<4時間目>
・smarty課題の練習

<5時間目>
・smarty課題の練習、続き

<6時間目>
・smartyでlogin.phpとlogin.tplに分ける
phpの課題でもやっていた、phpとhtmlのタグを分ける作業の延長

「|escape」に関連し、default_modifiersのURL紹介があったので少し調べました。
この関数default_modifiersはなかなか曲者のようで、別の記事もありました。

Smartyのバグ ~default_modifiers~
Webでよく調べたらもっと出るのかもしれないし、
3.0.6になって改善されているかもしれない。

☆追記、escapeの除外方法
smarty 2では、{$body|smarty:nodefaults}だったが、
smarty 3では、{$body nofilter}に変わったようです。
日本語版マニュアルはまだですが、英語版には反映されています。

2011/03/02

smarty講習

php講習 3/2

・掃除は雨でお休みでした。
・今日も雨だが、花粉症で目がかゆい。

<1時間目>
・apacheのバーチャルホストの説明
httpd-vhosts.conf設定変更
設定は環境をlinuxで作ったときに行うので一度戻しましょう。

<2時間目>
・資料がメールで送付されたので、参照して下さい。
・PHPの基礎の話し。
・php.iniのerror_reportingについて
eclipseの変数表示、「緑の○」
この表示がない変数は定義されていない(目安になる)
連想配列$_POSTの事前定義は、冗長になるので「@」を付ける
エラーの原因がわかっている場合のみ使用可能。
・現場の状況によって使い分ける。
全部宣言すると、javaと同じになり、phpのメリットがない。
ちなみに、php.iniのerror_reporting設定はphpスクリプトの関数でも実行できるみたい。
error_reporting(E_ALL);

・サーバ上のフォルダにindex.phpがないとき、ディレクトリが見えてしまう。
公開するサーバではまずいので、linuxの環境を作ったとき設定をします。

<3時間目>
・smartyの話し。
・再度メールで資料が2件送付されています。
 昨日同様に資料を展開して、フォルダーをプロジェクトに。

<4時間目>
・課題1、2の説明と、練習
 代入文
 if文

<5時間目>
・課題3の説明、{foreach}
・セレクト部品の処理をsmartyで書く

<6時間目>
・セレクト部品の処理をsmartyで書く(続き)
ブラウザ?でキャッシュされているため、selectを変更したあと
画面をリフレッシュしても、現在の日付に戻らなかった。
毎回画面を閉じて、開きなおすと動いた。

・明日は、smartyでDBの処理だそうです。
・また、smartyは今週で終わりで、来週からlinuxだそうです。
そのlinuxも数日で、次がsymfonyの予定だそうです。
メモリは間に合ったのだろうか?

2011/03/01

xampp環境にsmartyインストール、環境設定

訓練記録 3/1

・今日から3月です。訓練も半分終わってしまいました。
・掃除は雨でお休みでした。

<1時間目>
・昨日のclassサンプルプログラム修正版がメールで送付されたので差し替え
・クラス、オブジェクト指向、テンプレートエンジンの説明用資料配布、内容の説明

・UMLでの開発について
大規模なシステムの場合、パーツに分けてそれぞれ担当が開発する。

・MVCモデル、テンプレートエンジン
モデル 
ビュー 
コントローラ 
smartyはビューの部分を切り離すもの
モデルは自分で作らなくてはならない。
・PHP開発者は、ほぼsmartyは経験している。
それ以降、フレームワークはそれぞれの会社等で使っているものを使用。

・PHPフレームワーク、3大フレームワーク
Zend,Symfony,Cake
開発の仕事をするためには、いずれか1つ使いこなしていることは必要。
googleトレンドにてシェアを見てみる。
・開発する場合、現場では使用するフレームワークは用意されている。
・過去の案件でメンテナンスする場合もあるが、大きい開発の場合、
smartyは使わない。
・カスタマイズになった場合、フレームワークは選べない。

・phpメーリングリスト
登録することをお勧め。
phpで判らないことがあったとき、ここの過去ログにたどり着くことが多い。
メールは、毎回受け取るよりは、毎日1回にしておくことをお勧め。

phpの開発者も参加している。(はてなのユーザIDでもログインできます)

以下、Webのテキストを参考に作業(xampp環境にインストール)
・smarty(3.0.7)インストール
(このサイトでマニュアルもダウンロードできますが、オンラインでも見れます)
smarty用のプロジェクトを作成
C:\pleiades\xampp\apache\conf\extra\httpd-vhosts.conf
### Smarty サンプル ###
<VirtualHost *:80>
ホストのIP設定(windows)
C:\WINDOWS\system32\drivers\etc\hosts
127.0.0.1       Smarty_sample

キーワード検索(時間のある人は調べておく)
・バーチャルホスト
・hostsファイル
・127.0.0.1
・localhost
・名前解決
dns
・nslookup
・Webアプリ
・get/put
・キャッシュ(cashとcacheは違います)
・サーバサイド(スクリプト)
・クライアントサイド(スクリプト)
ちなみにphpはサーバサイドスクリプト

smartyの環境設定(フォルダ作成:Example 2.5、Example 2.9参照)
    * templates
    * templates_c
    * config
    * cache

smartyのリンク (初心者向け自己学習の参考にして)
smartyのリンク (その2)

・smartyファイル作成
hello.php(smartyのテンプレート呼び出し)
hello.tpl(smartyのテンプレート、templatesフォルダへ入れる)
テンプレートファイルの拡張子は「.tpl」を使いましょう。

・smartyソース(hello.php)の解説
ライブラリ(libs)
テンプレートディレクトリ(template_dir)
コンパイルディレクトリ(compile_dir)
phpと違って、変数名?の先頭に$は付かなくてもいい?

・セキュリティ上問題があるので、今回作成したディレクトリは通常サーバの
公開されるディレクトリには置かない。
(公開領域(htdocフォルダ内)には、smarty関連フォルダは置かない)

・smarty 配列変数での出力
 JSP

* 何回も更新してごめんなさい。思い出しながら書いてます。