<<Symfonyを使ってみる>>

  今日も
名前:wada  日付 : 2007年01月31日 23:58:22

ブログのスタイルシートとかいじってたらこんな時間に!!
画像を少し変えるだけっておもいつつ何度もやり直したり
まだやりたいんだけどもうこの辺にしておいて・・・
っていうか昨日、今日とプロジェクトの方はぜんぜんやってません。



  やっとこさ
名前:wada  日付 : 2007年02月01日 19:49:41

大体の整形ができたようなきがするので
http://jdbb.exblog.jp/
こちらに移動。



  ついでに
名前:wada  日付 : 2007年01月31日 00:12:21

ブログの登録をやってみてる最中。
やることはcssとテーブルの配置とかだけですむみたい。
ただ、もう眠いのでまた今度。

また、前述のプロジェクトをまとめて保存していつでも見れるように
xoopsをインストール。
ホームページビルダーとかなんていうのはもってないので
静的コンテンツとして保存しておくのに使いたかったから。
未だに分かってないですがphp言語は多少理解できてもフレームワークってなに??
っていう人に向けて少しは分かりやすくまとめられるのを目指して。
CodeZineのやつみたいに。



  で、
名前:wada  日付 : 2007年01月31日 00:19:27

ここのところ自宅パソコンwindow のほう。を触りっぱなしなのですが
ソフトがほとんど入ってないことに気づいた・・・。
jpegで保存するソフトすら入ってません。ftpソフトもこの前やっとダウンロード。
なにこれ。



  今日は
名前:wada  日付 : 2007年01月31日 00:04:01

6日目はおやすみ。
このプロジェクトとは関係ないですがexbridgeさんにお邪魔してきました。
n個のリクエストに対しレスポンスは1つ。
という動作がわからなかったのでお聞きしに言ってきました。

以下覚書。

一つのモジュールに1つのテンプレート。(xxxxShowとか)
他の動作へのリンクは全てフォーム(もちろんリンクでgetでもかまわないですが)
アクションで受け取ったパラメーターは独自のクラス(サービス)に渡す。
その渡されたクラス(サービス)の中で目的の動作をさせてreturn。
(テーブルに書き込んだりもここでする)
返ってきた値でセッション変数を書き換える。
最後に表示させるアクションにリダイレクトさせる。(xxxxShowとかに対するexecuteXxxxShowへ)

こんな感じ?

とりあえず動き自体は分かったので今度自分でやってみる。



  5日目
名前:wada  日付 : 2007年01月29日 19:44:43

結局どこがおかしいのか分からずじまいで、プロジェクトをそのままバックアップ。
同じディレクトリ、をつくりinit-project、init-appをやってから
必要な部分を上書きして元に戻しました・・・。また今度どこがおかしくなっていたのか調べてみるとして

まず、前日の補足。ファイルのアップロード部分は前日のリンクを見て。
userのlistSuccessテンプレートに
<?php echo form_tag('user/upload', 'multipart=true') ?>
<?php echo input_file_tag('file') ?>
<?php echo submit_tag('CSSファイルのアップロード') ?>
を追加。

で、アクションにexecuteUploadを作成。

  public function executeUpload(){

    $this->getRequest()->moveFile('file', sfConfig::get('sf_web_dir').'/css/'.
      $this->getUser()->getAttribute('userid').'.css');
   
    $this->redirect('user/list');    
  }

cssファイルをアップロードできるのはユーザーのみなのでファイル名を
userid.cssとする。

で、スタイルシートを変える際に前日はymlファイルに直接phpを書こうとしておかしくなったので
今回はアクション内で変更するという方法。
幸い独自スタイルシートを使う部分はuser/list user/showだけなのでこれで行きます。
もっと多い場合は毎回指定しなければならないってことになるので
ymlにphpを埋め込むというやつでやりたかったのですが・・・

アクション内に
$this->getResponse()->addStylesheet($css);
を追加するだけ。

で、まずはuserのアクションexecListに以下を追加。
    $css = $this->getRequestParameter('user_id');
    $css = myCssName::getCssName($css);
    $this->getResponse()->addStylesheet($css);

今度はexecShowにuser_idパラメーターの変わりにmain_idを渡したのを追加。

でアプリケーション/libディレクトリに
myCssName.class.phpファイルを置いて

class myCssName
{
  public static function getCssName($str){
    $finder = sfFinder::type('file');
    $finder = $finder->name($str.'.css');
    $files = $finder->in(sfConfig::get('sf_web_dir').'/css/');

    if (count($files))
      return $str;
    else
      return 'default';

  }
}

を追加。sfFinder参考リンク
http://develop.ddo.jp/tech/index/PHP/Symfony/documentation/Symfony101/%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%C0%DF%C3%D6

本来ならuserテーブルにフィールドを作って初期値をdefaultに、ファイルをアップロードしたらuidを。
等のもっといい方法があるのですが、勉強ということで今回はこのままで。

で、クラスを作る場合。libフォルダがプロジェクトルートディレクトリや
いろんな場所にありますがそれを使う頻度や場面に依っておきます。
また、ファイル名はクラス名.class.phpとする。ようです。
初期化しなくてもいいということでそういう縛りになっている?


で、デフォルトスタイルシートをdefalut.cssをプロジェクト/web/css/に入れておく。
以上でほぼ予定していた機能はついたのであとは使わないものの整理や
validetorで入力値の検査なんかをやればおわりって感じでしょうか??



  4日目
名前:wada  日付 : 2007年01月28日 21:40:07

さて、4日目。整形ということでCSSファイルを作って
終了。そして日曜日なのでそのまま続けてみたんですが・・・。

ファイルのアップロードは
http://develop.ddo.jp/symfony/book/jp/1.0/upload.html
を参照。で、ymlファイルにphpを組み込めるという事で
http://blog.symfony.jp/2007/01/09/phpcode_in_yaml/
なんかsfへのリンクがおかしくなったようで
かなり手こずっている最中です。
どうなるのか・・・



次の5件>>