$this->{$key} = $val;
2011年9月20日火曜日
2011年9月16日金曜日
disabledとreadonly
なるほど、書込み禁止の要素結構ありますね、見た目の関係でよくreadonlyを使わずdisabledを使います。
しかしdisabledは「使用禁止」という意味ですから、valueはForm送信されないらしい。やはりreadonlyを使うべきだね。
見た目はCSSで頑張りましょう
<input name="score" disabled="disabled" value="100" />
しかしdisabledは「使用禁止」という意味ですから、valueはForm送信されないらしい。やはりreadonlyを使うべきだね。
<input name="score" readonly="readonly" value="100" />
見た目はCSSで頑張りましょう
input[readonly=readonly] { border: 1px solid #556f8c; color: #0a0809; text-shadow: 0 -1px 0 #DFE5D7; background: -moz-linear-gradient(top, #f6f6f6 0%, #e1e1e1 100%); /* firefox */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e1e1e1), color-stop(100%,#afafaf)); /* webkit */ }
2011年9月14日水曜日
変数でワークシートを参照する関数INDIRECT
ラベル:
excel
セルB1の内容によって参照するシートを変える
例えばセルB1の内容は"201105"であれば、参照範囲はシート名が"201105期"シートのRange("O5:O65535")
そして、その範囲で全て2010/05/01以降の行をカウントする
=COUNTIF(INDIRECT(CONCATENATE($B$1,"期!O5:O65535")),">2010/05/01")
例えばセルB1の内容は"201105"であれば、参照範囲はシート名が"201105期"シートのRange("O5:O65535")
そして、その範囲で全て2010/05/01以降の行をカウントする
2011年9月10日土曜日
QdmailでHTMLメール送信の件、フレームワークはcakePHP
cakePHPを使って開発している、QdmailでHTML送信したいですが、思うように動かなかった。
HTMLのタグが無視されたり、変な「?」が表示されたり、とにかくすんなり行かない。
やっと最後はうまく行ったので、やったことをメモしとく
環境はこう:
cakePHP 1.3
centOS 5
まずは勿論Qdmailをダウンロード、http://hal456.net/qdmail/downloads#p6.1 使ったのはqdmail.1.2.5b.zip 解凍して、controllers/components/に入れます。
まずこのqdmail.phpを改造しないと行けない
まずは3821行あたり
そして前回の投稿にも紹介した、340行あたり
のhtmlとplainの順番を差し替え
改造終わったら、いよいよコーディング
例えば、仮登録後に本登録のメールを送信する
registers_controller.phpで
(じゃないと何故か変数はOKだけど、テンプレートの日本語が全部化けちゃう)
②最後のEOFを改行
(じゃないとなぜか最後の行にモジバケがつく)
レイアウトはこんな感じ、日本語ないからエンコードはどうでもいい
まぁ、以上かな…
そうだ自宅サーバですので、プロバイダーはplalaです、OP25B対策しないと送信できない、ここをご覧plalaのOP25B対策、sendmail編
HTMLのタグが無視されたり、変な「?」が表示されたり、とにかくすんなり行かない。
やっと最後はうまく行ったので、やったことをメモしとく
環境はこう:
cakePHP 1.3
centOS 5
まずは勿論Qdmailをダウンロード、http://hal456.net/qdmail/downloads#p6.1 使ったのはqdmail.1.2.5b.zip 解凍して、controllers/components/に入れます。
まずこのqdmail.phpを改造しないと行けない
まずは3821行あたり
$content = $view->renderElement( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true );この一行をこう変えます
if( version_compare(Configure::version(), '1.3.0') < 0){ $content = $view->renderElement( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true ); }else{ $content = $view->element( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true ); }すると、cakePHP1.3も使えるようになった。
そして前回の投稿にも紹介した、340行あたり
'multipart/alternative'=>array( 'html' => 1, 'plain' => 1, 'OMIT' => true, ),
のhtmlとplainの順番を差し替え
'multipart/alternative'=>array( 'plain' => 1, 'html' => 1, 'OMIT' => true, ),こうするとGmailなどもHTMLのタグを正常に表示てきる。
改造終わったら、いよいよコーディング
例えば、仮登録後に本登録のメールを送信する
registers_controller.phpで
class RegistersController extends AppController { var $components=array('registerLogic');//送信ロジックはコントローラーで書きたくないから専用のcomponentsを作成した var $helpers = array('Form','Notify'); var $name = 'Registers'; function beforeFilter() { $this->Auth->allow('add');//ログインしたくでも新規登録ができる } function add() { $this->layout = "login";//これはただレイアウトを引用 $params = $this->getRequestParams();//これはフォームからの変数を受け取るメソッド if (!empty($params)) { $params['session'] = $this->Session->read('Config.userAgent');//セッションIDを取得 $deleteCondition = array('session' => $params['session']); $this->Register->deleteAll($deleteCondition);//セッションにが既に登録してたら、削除 $this->Register->create();//仮登録を登録 if ($this->Register->save($params)) { //下のredirectをするとこのテロップが表示されなくなるらしい、セッションレベルを「low」にしても、受け継がない、困る $this->Session->setFlash(__('登録しました', true)); $this->registerLogic->sendRegisterMail($params);//専用のcomponentsを読んで、送信する $this->redirect(array('controller' => 'info','action' => 'warning',__REGISTER_COMPLETED__));//完了画面を表示 } } } }そしてregisterLogic.php
class RegisterLogicComponent extends object { var $components = array('Qdmail');//ここでQdmailを引用 function startup(& $controller) { $this->_controller = $controller;//コントローラーをセット //モデル読み込み App::import('Model','register');//モデルは必須ではないけど $this->_registerModel = new register; $this->Qdmail->startup($this->_controller);//コントローラーをセット } function sendRegisterMail($params) { $content = array( "title"=>__REGISTER_MAIL_SUBJECT__,//登録メールの定数メッセージ、別途定義済み "to"=>"あなた様",//何でもいい "session"=>$params['session'],//メールの正文で使うセッションIDを用意 "body"=>"ご注文ありがとうございました。");//なんでもいい $this->Qdmail->to($params['email'],'あなた');//送信先を定義、「あなた」は受信者名、一応ね $this->Qdmail->subject(__REGISTER_MAIL_SUBJECT__);//定数 $this->Qdmail->from(__NOREPLAY_MAIL_ADDRESS__ , __NOREPLAY_MAIL_FROM__);//送信者、ここも定数 //QdmailでcakePHPのメール要素(テンプレート)とレイアウトを引用するメソッド //引数1:テンプレート(メール正文)で使う変数 //引数2:テンプレート、パスは views\elements\email\html\ //引数3:レイアウト、パスは views\layouts\email\html\ $this->Qdmail->cakeHtml($content,'register','karu'); $this->Qdmail->send(); } }テンプレートはこんな感じ、
<?php echo $content["to"]; ?>様 <br /> この度は 「某某某某某」 に仮登録頂き 誠にありがとうございます。 <br /><br /> <?php echo $content["body"]; ?><br /> 登録を完成するには、下記リンクをクリックし、本登録を完成させる必要があります。<br /> <a href="http://某某某某.com/user/add?ssid=<?php echo $content["session"]; ?>">href="某某某某.com/user/add?ssid=<?php echo $content["session"]; ?></a><br /> 注意:このリンクは48時間以内有効です、48時間を超えた場合、再度仮登録からやり直す必要があります。 <br /><br /> 宜しくお願いします。<br /> 【某某某某.com】事務局より
ここでポイント!
(じゃないと何故か変数はOKだけど、テンプレートの日本語が全部化けちゃう)
②最後のEOFを改行
(じゃないとなぜか最後の行にモジバケがつく)
レイアウトはこんな感じ、日本語ないからエンコードはどうでもいい
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> <title><?php echo $title_for_layout;?></title> </head> <body style="font-size:12px;background-color:#fafafa;padding:20px;"> <div style="border:solid 2px #b7ddf2;background:#ebf4fb;margin:20px auto;width:800px;padding:14px;"> <h1 style="font-size:14px;font-weight:bold;margin-bottom:8px;margin-bottom:20px;border-bottom:solid 1px #b7ddf2;padding-bottom:10px;"> <?php echo $title_for_layout;?> </h1> <?php echo $content_for_layout;?> </div> <p> <div style="text-align: center;"> Copyright(C) xxxxxx. All Rights Reserved. </div> </p> </body> </html>
ここでポイント!
まぁ、以上かな…
そうだ自宅サーバですので、プロバイダーはplalaです、OP25B対策しないと送信できない、ここをご覧plalaのOP25B対策、sendmail編
2011年9月3日土曜日
QdmailがGmailでHTML表示しない件
ラベル:
php
cakephpでQdmailを使って送信するコードを書いています、しかしどうしてもHTMLがGmailで正しく表示されない!
苦闘の末、心が折れかかったとき、まるで神の救えてくれたように、このページを見つけてくれましたヾ(@^▽^@)ノ
ここ
そして出典はここ
Qdmail.phpの340行当たり
アーメン!
また、インラインでstyleを書けばすべて有効というわけでもないらしい、グラデーション、シャドーや丸角系(おしゃれ系)は無視されるらしい。
おしゃれHTMLメールを作るならやはり画像ゴリゴリですか...やめたほうがいいよ、simple is best!
苦闘の末、心が折れかかったとき、まるで神の救えてくれたように、このページを見つけてくれましたヾ(@^▽^@)ノ
ここ
そして出典はここ
Qdmail.phpの340行当たり
0 => array( 'multipart/mixed' => array( 'multipart/alternative'=>array( 'html' => 1, 'plain' => 1, 'OMIT' => true, ), 'image' => 'BOTH', // Available Inline 'OMIT' => true, ), 'OMIT' => true, ),ここのhtmlとplainの順番を 変えるだけで問題は解決された!
アーメン!
0 => array( 'multipart/mixed' => array( 'multipart/alternative'=>array( 'plain' => 1, 'html' => 1, 'OMIT' => true, ), 'image' => 'BOTH', // Available Inline 'OMIT' => true, ), 'OMIT' => true, ),ちなみに、GmailではHTMLメール表示する時、inlineのstyle属性しか効かないみたい、<script>タグは完全に無視されるらしい、つまり外部のcssを読み込んだり、scriptタグ内でcssを書いたり、全て無視されます。
また、インラインでstyleを書けばすべて有効というわけでもないらしい、グラデーション、シャドーや丸角系(おしゃれ系)は無視されるらしい。
おしゃれHTMLメールを作るならやはり画像ゴリゴリですか...やめたほうがいいよ、simple is best!
登録:
投稿 (Atom)