2011/03/30

smartyで掲示板、設定ファイル

php講習 3/30

・今日は中の掃除当番、陽気がいいので掃除しているだけで暑い。

1時間目
・カテゴリを追加する処理
カテゴリボックスを作成
カテゴリテーブルから持ってくる。

投稿をカテゴリ分けするため、コメントテーブルにも項目追加

右カラムのメニューに「カテゴリ」を追加
テーブルに入っている項目の一覧を表示、選択出来るようにする。

・default/indexの記事返信表示で、データの取得方法を教えてもらう。
BaseCommentに、以下の処理追加
public function getReplys() {
  $c = new Criteria();
  $c->add(ReplyPeer::COMMENT_ID, $this->id);
  return ReplyPeer::doSelect($c);
 }
indexSuccess.phpにてreplyの記事を表示するタイミングで呼ぶ
<?php $replys = $comment->getReplys();?>
あとは、$replysをforeachで回す。

・vhostの設定を変更してみた。
/etc/httpd/conf/httpd.conf
alias  /sf /usr/share/pear/data/symfony/web/sf

・不具合と思われるところ
記事を投稿しても1行にまとまってしまい、改行が正しく認識されていない。

・テーブルにカテゴリ項目(Categories)追加
ALTER TABLE comment ADD COLUMN categorie int AFTER content;
・カテゴリテーブルを追加(idはautoincrementしない方が良かった)
CREATE TABLE categorie(
id int not null auto_increment,
categorie text,
created_at datetime,
primary key(id)
) ;
ID,カテゴリ名(データ入力も)
insert into categorie (categorie, created_at)
VALUES ("日記", now());
・テーブル、項目追加のモデルへの反映
$ symfony propel-build-schema
$ symfony propel-build-model
$ symfony cc

・default/indexのフォームにカテゴリ項目(ドロップダウンリスト)追加
  読み込み
 
・投稿画面、確認画面にカテゴリ項目追加
・default/indexの右側にカテゴリ表示追加

・答え合わせ

4時間目
・設定ファイル、yamlの基本
CSVならカンマ区切りで、XMLならタグでというように、
yamlは半角スペース(2個単位)でデータ構造を表現する
階層は半角スペース2つでインデント
.(ドット)で始まる行はコメント

・設定ファイルの設置場所
プロジェクト、アプリケーション、モジュール
プロジェクト以外はあまり使うことはない。

・環境別の影響度
/web/index.phpの
define('SF_ENVIRONMENT', 'prod');
たとえば、下記で設定値が異なる。
/apps/front/config/settings.yml
今すぐにつかうことはないが、あとで確認したいとき、出来るように。

・設定ファイル一覧
プロジェクトルート/configに設置されるファイル
config.php     symfonyのライブラリへのパスを指定

プロジェクトルート/apps/アプリケーション名/configに設置されるファイル
settings.yml     アプリケーション全体の設定
#allに書かれている内容は、デフォルトでこの設定になっている。
変更する必要があれば、コメントを外して設定する。
routing.yml     ルーティングの設定
→URLでアクセスしたとき、どのモジュールで処理をするか。
ここをいじると何処にアクセスしているか分からなくなる。
別項目で詳細を説明
filters.yml     フィルタ処理の設定
→これもあとでやります。

プロジェクトルート/apps/アプリケーション名/modules/モジュール名/configに設置されるファイル
今は何もありませんが、設定したいときここに置きます。
設定ファイルには、コメントを入れないと値が反映されない。

・設定ファイルからの値の取得
ここは、必ず使うので出来るようにする。
ymlファイルを設定したときは必ず「symfony cc」する。

・設定ファイルの練習
setting.ymlに値と配列をセットして、参照出来ることを確認する。
アクションでもテンプレートでも呼び出し可能。

・県コード県名の配列データを作成し、フォームを作成する。

・アプリケーションごとに設定する変数の練習
プロジェクトルート/apps/アプリケーション名/config/app.ymlに同じように定義し
参照する場合はsfConfig::get('app_設定したキー名');という形で参照できる。
(あまり使いどころはありません)

5時間目
・カテゴリ機能追加の続き
indexにてカテゴリを表示する機能作成

・メニューにカテゴリを追加

6時間目
・ntpサービスのインストール
時刻が合っていないので、5分ごとに時間を合わせる。
crontabに設定、作業はrootで実行すること。

今使っているサーバは開発用なのでntpの設定をしていますが、
本番機サーバでは設定しないことをお勧めします。
開発機、本番機サーバとntpサーバの時刻が異なることは良くあります。
今回の事例では、サーバの時刻を進めることになりますが、
サーバの時刻が戻ると、DBが壊れる可能性があります。
DBは内部で時刻を管理情報に使っているため、サーバの時刻が
戻るとDBの内部で矛盾が生じ、最悪起動できなくなります。
運用担当者の胃が痛くなるDBリストアにならないことを祈ります。

・メニューにカテゴリを追加、作業の続き

・明日は、返信のところを答え合わせ
次はファイルのアップロード

0 件のコメント:

コメントを投稿