スポンサーサイト

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

ツリービューについて

参考URL
www.ne.jp/asahi/hatakeyama/design/csslayout/ajaxtest/index13.html

ライセンスはMITライセンス。


スポンサーサイト

バーチャルホストを設定したところ、意図ししないURLに接続される

たとえば、http://www.ec-photomaterial.com/public/indexと
(symfonyで作成)
http://phpmyadmin.comという二つのURLがあり、
それぞれバーチャルホストの設定を行ったところ、

http://phpmyadmin.comへつなげようとすると、symfonyの初期画面へ
接続されてしまう。

原因は、httpd.conf内の設定ミス。
下記の部分

#
# Use name-based virtual hosting.
#
#NameVirtualHost *:80

のNameVirtualHost *:80のコメントアウトを
外さなかったため。

コメントを外したところ、正常に動作した。

参考URL
kazmax.zpp.jp/apache/apache5.html

CSVファイルの末尾のカンマを取り除く方法

$export_data = rtrim($export_data,',')."\n";

Puttyのコマンドライン上からPHPを実行するには?

PHP (実行したいPHPファイル名)


テーブルの内容をCSVへ出力する方法

select * from テーブル名 into outfile "出力ファイル名" fields terminated by '区切り文字' ;


select * from comment into outfile "./export.csv" fields terminated by ',' ;


symfonyでjQueryを使用する方法

プロジェクト名/web/js配下に、jquery.jsを配置する。

後は、一般に使用されている方法と同じ。


DOMについて

DOM(Document Object Model)とは、HTMLやXMLで書かれたドキュメントにアクセスするための標準的な仕組み。

文書に含まれる、属性、要素、テキストをオブジェクトとみなして扱う。
属性、要素、テキストといったオブジェクトのことを「ノード」と呼び、
DOMはこの「ノード」を抽出、追加、置換、削除するための汎用的な手順を提供するAPIである。

1:document.getElementByIdメソッド

  例
  document.getElementById(ターゲット名)

  ターゲット名で指定された項目から値を取得する。
  
2:document.getElementsByTagNameメソッド

  例
  
document.getElementsByTagName(タグ名)
 
  タグ名をキーにノードを取得する

jQuery開発者向けメモ

www.mikage.to/jquery/jquery_basic.html

主要なJavascriptの命令

1:aleat
  メッセージボックスを表示する命令である。
  この命令は、記述したファイルが実行された瞬間に実行される。

  例
  alert("test");

2:document.write
     文字列を表示させる。

  例
      document.write("test");


イベントハンドラ:何何したら・・・という意味。


主なイベント

分類 イベント名 発生タイミング 主な対象要素
読み込み abort 画像の読み込みが中断された時 img
load ページ、画像の読み込みが完了した時 body, img
unload 他のページに移動する時 body
マウス onclick マウスクリック時 -
dblclick ダブルクリック時 -
mousemove マウスポインタを移動した時 -
mouseout 要素からマウスポインタが外れた時 -
mouseover 要素にマウスポインタが重なった時 -
キー keydown キーを押下した時 -
keyup キーを離した時 -
keypress キーを押している最中 -
フォーム onChange 内容が変更された時 input, select
submit サブミットボタンが押された時 form
reset リセットボタンが押された時 form
フォーカス blur 要素からフォーカスが離れた時 -
focus 要素がフォーカスされた時 -
その他 resize 要素のサイズを変更した時 -
scroll スクロールした時 body

変数について

var 変数名 = 値;の形で定義する。

初期値を設定しなかった場合,未定義値(undefined)という値が入っている。

識別子とは、変数や関数などに付ける名前のこと

javascriptの命名規則は以下のようになります。

  • 1文字目は英字、アンダースコア、ドル記号のいずれかであること
  • 2文字目以降は英字、アンダースコア、ドル記号、数字のいずれかであること
  • 変数名に含まれる英字の大文字/小文字は区別される
  • javascriptの予約語ではないこと

javascriptはvarをつけて変数を指定しないと、グローバル変数としてみなされる。


画像解像度を取得する方法

The PHP JPEG Metadata Toolkitというライブラリーがある。
www.ozhiker.com/electronics/pjmt/

ライセンスはGNUである。
jfifまたはexifから取得する方法である。

解説については、以下を参照のこと。
q.hatena.ne.jp/1130721466

Exifから取得する場合、PHPの関数でexif_read_dataで取得が可能。
ただし、必ずしも取得できるとは限らないため、注意が必要である。
(Photoshopなどで加工したファイルはExif情報は取得できない)


jQueryLoupeについて

kachibito.net/web-design/loupe.html

画像を拡大表示できるプラグインである。

上記のURLには、ダウンロードサイトの記載もあり。
ライセンス形態については、未確認

symfonyでTinyMCEを使用する方法

ref.layer8.sh/ja/entry/show/id/2339

blog.layer8.sh/ja/2011/12/16/tinymce%E3%81%AE%E7%B4%B0%E3%81%8B%E3%81%AA%E8%A8%AD%E5%AE%9A%E3%81%AE%E6%96%B9%E6%B3%95/

www.flatz.jp/archives/1356

ライセンスは、LGPLである。


jQueryでアコーディオンメニューを作成する。

triplexxx.jp/archives/150
web.donnatokimo.com/jquery/517

sfPropelPagerについて

symfonyは標準でsfPropelPagerというページャー機能を実装している。

www.symfony-project.org/cookbook/1_1/ja/pager

以下は、コーディング方法である。
コーディング方法については、以下の二つのパターンがある。

ここでは、Commentというテーブルが、MySQLに定義されていることを
前提とする。

1:パターン1

(1):actionに以下のコードを記述する。

$page = $this->getRequestParameter("page",1);//第2引数は初期値
$perpage = 10;//1ページに表示する件数

$c = new Criteria();
$c->addDescendingOrderByColumn(CommentPeer::CREATED_AT);
$this->pager = new sfPropelPager("Comment",$perpage);
$this->pager->setCriteria($c);
$this->pager->setPage($page);
$this->pager->init();
$this->comments = $this->pager->getResults();

(2):(プロジェクト名)/apps/front/templates/配下に_pager.phpという名前で、
  以下のコードを記述する。このコードは、パーシャルとして呼び出す。
------------------------------------------------------------------------------------
<!-- ページャーをつけるかどうかの判定 -->
<?php if ($pager->haveToPaginate()): ?>
    <div class="clr"></div>
    <div class="pager">
    <?php echo $pager->getNbResults() ?>件中 <?php echo $pager->getFirstIndice() ?> ~<?php echo $pager->getLastIndice() ?>件 表示<br>

    <?php
    $query = $sf_data->getRaw('query');
    ?>
    <ul>

    <!-- < と << を表示するかどうかの判定 -->
    <?php if ($pager->getPage() != $pager->getFirstPage()): ?>
        <li class="first"><span><?php echo link_to('<', $query."page=".$pager->getFirstPage()) ?></span></li>
        <li class="prev"><span><?php echo link_to('<<', $query.'page='.$pager->getPreviousPage()) ?></span></li>
    <?php else: ?>
        <li class="first"><span> &lt; </span></li>
        <li class="prev"><span> &lt;&lt; </span></li>
    <?php endif; ?>

    <?php $links = $pager->getLinks();?>

    <?php foreach ($links as $page): ?>
        <?php if ($page == $pager->getPage()):?>
            <li class="current"><span><?php echo $page;?></span></li>
        <?php else:?>
            <li><?php echo link_to($page, $query.'page='.$page) ?></li>
        <?php endif;?>
    <?php endforeach ?>

    <!-- > と >> を表示するかどうかの判定 -->
    <?php if ($pager->getPage() != $pager->getLastPage()): ?>
        <li class="next"><span><?php echo link_to('>>', $query.'page='.$pager->getNextPage()) ?></span></li>
        <li class="last"><span><?php echo link_to('>', $query.'page='.$pager->getLastPage()) ?></span></li>
    <?php else: ?>
        <li class="next"><span> &gt;&gt; </span></li>
        <li class="last"><span> &gt; </span></li>
    <?php endif;?>
    </ul>
    </div>
<?php endif ?>
-------------------------------------------------------------------------------

(3):テンプレートに、以下のコードを記述する。(パーシャル呼び出し)
<?php include_partial("global/pager", array( "pager" => $pager,
"query"=> $sf_context->getModuleName()."/".$sf_context->getActionName()."?"))?>

2:コーディング例2(パラメータを元にして条件指定)
     この例は、抽出条件があるときに有効。

(1):(プロジェクト名)//lib配下に、以下のファイルを設置する。
   ・MyPagerQueryHelper.php
   ・MyUtilityHelper.php

   上記は、parameter_to_query関数を使用するために設置する。

(2):actionに以下のコードを記述する。
$page = $this->getRequestParameter("page",1);//第2引数は初期値
$perpage
= 10;//1ページに表示する件数
$this
->query_parameters = array(
   
"module" => "default",
   
"action" => "index",
   
"order_by" => $this->getRequestParameter("order_by"),
);

$c
= new Criteria();
if($this->query_parameters["order_by"] != "asc"){
    $c
->addDescendingOrderByColumn(CommentPeer::CREATED_AT);
}else{
    $c
->addAscendingOrderByColumn(CommentPeer::CREATED_AT);
}
$this
->pager = new sfPropelPager("Comment",$perpage);
$this
->pager->setCriteria($c);
$this
->pager->setPage($page);
$this
->pager->init();
$this
->comments = $this->pager->getResults();

(3):パターン1の(2)の処理を行う。

(4):テンプレートに以下の内容を記述する。(パーシャルとして記述する)
<?php include_partial("global/pager", array( "pager" => $pager,
"query"=> parameter_to_query($sf_context->getModuleName(),
$sf_context
->getActionName(),
$query_parameters
)))?>

(5):必要であれば、以下の処理を記述する。(降順で並べる)
<a href="./?order_by=asc">created_atをascで並び替え</a>





Photoshopの上級者でさえ なぜか曖昧な5つの基本機能

www.mdn.co.jp/di/articles/2673/

sfPageFlowについて

フォームの遷移を簡単に定義し管理するプラグイン

フォームのページ遷移をymlで管理し
煩雑なフォーム処理をシンプルに構築できる。

本プラグインを使用するためには、以下の設定が必要になる。

1:pluginの設置

  (プロジェクト名)/plugins配下に、sfPageFlowディレクトリを
  コピーする。
  sfPageFlowディレクトリについては、以下より入手のこと。
  github.com/tumf/Symfony1.0_sfPageFlowPlugin

2:自動生成タスクの設置

  (プロジェクト名)/data配下にtaskフォルダーを作成し、
  以下のファイルをコピーする。

   ・myPakePropelEditGenerator.php
   ・myPakePropelListGenerator.php
   ・myPakePropelCreateGenerator.php

3:addonファイルの設置(root権限で行うこと)

  /usr/share/pear/symfony/addon/propel/generator
  配下に以下のファイルを設置する。

  ・sfPropelCrudGenerator.class.php
  ・sfPropelEditGenerator.class.php
  ・sfPropelListGenerator.class.php

4:スケルトンファイルの設置(root権限で行うこと)

  /usr/share/pear/data/symfony/generator
  配下に以下のフォルダをコピーする。

  ・sfPropelCrud
  ・sfPropelEdit
  ・sfPropelList

3,4については、root権限で転送ができるソフト(winscpなど)
を使用してコピーすること、puttyなどのターミナルソフト上で
cpコマンドを使用してのコピーでは、ファイルが置き換わらないケースがあった。


5:ヘルパーファイルの設置

  プロジェクト直下の/libにhelperフォルダを作成し、
  以下のファイルを設置

    ・MyPagerQueryHelper.php
    ・MyUtilityHelper.php

  テンプレート上でヘルパーファイルを定義する。
  <?php use_helper( "MyUtility" , "MyPagerQuery" ) ?>

6:routing.ymlの内容に、以下の内容を記述する。
  アクションとテンプレートの紐付けは、pageflow.ymlで結び付けられる。

member_edit:
  url: /member/edit/:id
  param: { module: member_edit, action: flow}
member_add:
  url:  /member/add/
  param: { module: member_add, action: flow}

7:コマンド実行

  プロジェクト配下で、以下のコマンドを実行する。

  #CREATE
  symfony propel-generate-create アプリケーション名 モジュール名 モデル名

  #EDIT
  symfony propel-generate-edit アプリケーション名 モジュール名 モデル名

  #LIST
  symfony propel-generate-list アプリケーション名 モジュール名 モデル名

  入力例
  symfony propel-generate-create backend member_add Member
  backendアプリケーション内に、member_addモジュールを定義する。
  モデル名はMemberである。モデル名=テーブル名ととらえてよい。

[使用方法]
sfPageFlowは、(モジュール名)/config/pageflow.ymlで動作を制御する。
以下はその説明である。

firstState: ProcessInitialize 最初にアクセスするところ。
lastState:  DisplayResult 最後にアクセスされるところ。

     onSuccess: ProcessSetup エラーがなければ、processSetupテンプレートへ進む。

      doInput:   ProcessValidate ボタンが押されたら、ProcessValidateテンプレートへ進む。

ProcessValidate:
    entry:
      - acceptRequests:
   params:  [nickname, mailaddress, password, admin_yn, ] フォームタグの内容。ここにないものは受け取れない。

      doConfirm: ProcessSubmit 次へ進むボタンを押したらProcessSubmitテンプレートへ進む。
      doCancel:  ProcessSetup 戻るボタンを押したらProcessSetupテンプレートへ戻る。





getModuleName,getActionNameについて

sf_context -> getModuleName();
現在のモジュール名を取得する

$sf_context->getActionName();
現在のアクションを取得する

参考URL
blog.layer8.sh/ja/2011/12/26/%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E5%90%8D%E3%82%84%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%90%8D%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8Bsymfony/

sfPageflowについて

ooyama3.blogspot.jp/2011/04/426.html

GDライブラリーについて

http://php.net/manual/ja/book.image.php
ただし、インストール作業が必要になる。

GDの設定関係(使用出来るかどうかなど)
http://tsuttayo.jpn.org/php/gd/

プログラミング例
http://www.geekpage.jp/web/php-gd/

symfonyでAPを作成する手順(まとめ)

以下は、symfonyでAPを開発するときの手順を時系列的に
まとめたものである。

1:プロジェクト、アプリケーション、モジュール、アクションの作成
  symfonyでコーディングを始めるまでの準備

2:データベースの作成、テーブルの作成、データベースの設定
  MySQL上やPHPMyadmin上で行う。
  (※データベースを使用するときのみ)

3:propel.ini、databases.ymlの設定
  symfonyでデータベースを使用するには?
  (※データベースを使用するときのみ)

4:デバッグモードの設定
  symfonyのデバックモードについて

ここまで作成すると、APの開発を始めることができる。
以下を参考に。
5:CSSやタイトル(<title>)、metaタグ、テンプレート共通部分の設定について
6:ヘルパーについて
7:エラーチェックについて
8:アクセス制御について
9:部品化について
10:ログイン処理について
11:symfony設定ファイルについて
12:$_GETで受けとるときの指定を行う。
13:モデルによるCRUDについて(SQL)
14:Criteria(クライテリア)による条件指定(SQL)
15:add,addAnd,addOrメソッドについて(SQL)
16:外部キーについて
17:symfonyメモ


jpMailプラグインについて

blog.asial.co.jp/425
ライセンスはフリー(商用利用可能)
jpMailはsymfony配下でのみ使用可能。
添付ファイルもつけられる。(sfMailクラス使用)

[jpMailコーディング例]
// メール送信
mb_internal_encoding('UTF-8');
$mail = new jpMail();
$mail -> setFrom("abc@abc.com","abc");
$mail -> setSender('mis018.xxxx@xxx.com');
$mail -> addReplyTo('mis018.xxxx@xxx.com');
$mail -> setSubject("test");
$mail -> setBody("テストメッセージ");

$mail -> addAddress("mis018.xxxx@xxx.com");
$mail -> send();

メール本文については、テンプレート化も可能である。
getPresentationForメソッドを利用する。
getPresentationFor('モジュール名','アクション名')の形で記述する。

[記述例]
getPresentationFor('contact_mail','sendAfterContact');

上記の例は、contact_mailモジュール配下にsendAfterContactアクションとそのテンプレートを作成する。
(sendAfterContactSuccess.php)
テンプレート内に送りたいメッセージを記述する。

ただし、そのままでは、html構文が添付されてしまい。
迷惑メールとして扱われてしまう恐れがある。
これを防ぐため、configディレクトリ配下にview.ymlを作成し、
以下の構文を記述する。

default:
  has_layout: off

[テンプレートを使用したjpMailコーディング例]
// メールテンプレート(第一パラメータ:モジュール名 第二パラメータ:アクション名
$message = $this -> getPresentationFor('contact_mail','sendAfterContact');

// メール送信
mb_internal_encoding('UTF-8');
$mail = new jpMail();
$mail -> setFrom("abc@abc.com","abc");
$mail -> setSender('mis018.xxxx@xxx.com');
$mail -> addReplyTo('mis018.xxxx@xxx.com');
$mail -> setSubject("test");
$mail -> setBody($message);

$mail -> addAddress("mis018.xxxx@xxx.com");
$mail -> send();

IEのMIMEタイプ(画像)について

d.hatena.ne.jp/kanonji/20100113/1263402605

IEは他のブラウザーと異なるMIMEタイプを設定しているので注意すること。


フォルダーにファイルを書き込めない

moveFileメソッドなどで、ファイルを書き込めない現象が起きたときは、
そのフォルダーのパーミッションを疑ってみるとよい。

特にユーザアカウントでログインし、フォルダを作成した場合、
第3者に権限が与えられていないことがある。


Twitter Bootstrap(CSSテンプレートエンジン)

www.ideaxidea.com/archives/2012/02/twitter_bootstrap_v2.html

3分動画でマスターする初心者向けプログラミング学習サイト - ドットインストール

dotinstall.com/

Symfonyで二重投稿防止をする。

dozo.matrix.jp/framework/symfony/session

さくらインターネットのメール発信規制について

rental.off-soft.net/3028.html

link_toヘルパーについて

link_toヘルパーを使用する場合で、パラメータを受け渡すときは、
以下のURLになるので注意すること。

[例]
http://www.symfony-blog/index.php/index?pastymd=2012-04

上記のように、index.phpが入ってしまう。
これは、link_toヘルパーの仕様である。

上記の現象を防ぎたいときは、aタグによる記述を行う。
これにより、以下の記述になる。

http://www.symfony-blog.com/index?pastymd=2012-04

criteriaでdate_format関数を使用する方法

[例]
$c->addAsColumn('Created_at_YM', 'DATE_FORMAT(' . self::CREATED_AT . ", '%Y %m %d')");

プロフィール

e.swan

Author:e.swan
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

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