2008年11月アーカイブ

        $this->Model->begin();
とかでトランザクションがはじめられるらしい
$this->Model->commit();
$this->Model->rollback();
も使えるらしい
Modelは何でもいけちゃうという記事をどこかで見た
ただ、正しい情報かは未確認で覚書程度にしておきます

http://cakephp.jp/doc/ch06s04.html#id4803164
とかを参考にしながら多:多の組み合わせを試したいたのですが
上手くいかない原因がわかりました

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1354&forum=8&post_id=2951
こちらの書き込みでcustarさんが指摘していたのですが
v1.1とv1.2でHABTMのつなぎのテーブルの書き方が変わっているようです
http://book.cakephp.org/view/24/Model-and-Database-Conventions
いやーcake知らないのが原因かとコントローラでモデル読み込んだりして
色々やってたんですが、上手くいかなくって情報探しまくってみました

テーブルを
CREATE TABLE posts_tags (
id INT(10) NOT NULL AUTO_INCREMENT,
post_id INT(10) NOT NULL,
tag_id INT(10) NOT NULL,
のように設定することで
削除についても
delするだけで連鎖的にやってくれます

PRIMARY KEY(id));

item[]
item[]
item[]
見たいな感じやりたかったんですよね
なのでフォーム上で
<?php echo $form->file('sub_visual[]'); ?>
とかしてみたらなぜか$this->dataの中を見ても表示されない
困ったときはマニュアルということで
(ほんとはgoogleで上手くたどり着けなかったんですけど)

7.3.3.1 フィールドの命名に関する慣習



に載ってました

<?php echo $form->file('sub_visual.0'); ?>
<?php echo $form->file('sub_visual.1'); ?>
って書くんですね
AJAXも必要だったんですけど
こっちは文字列結合すんで
ソース見てから
arInput ++
$("#area").before('<span id=\"group'+arInput+'\"><br><input type="file" name="data[Article][sub_visual/'+arInput+'/]" value="" id="ArticleSubVisual/'+arInput+'/" /></span>\n');

こんな感じに加えました



core.phpに書く方法もあるようだが
core.phpに書くとアップデートとかしたときややこしいかなと
そこで探していたところ

ねねとまつの小部屋

のエントリに見つけた
http://blog.ne2ma2.com/archives/154

app/config/bootstrap.php
にて定数を定義するファイルを記述し
<?php
config('const');
?>

app/config/const.phpに
<?php
define('IMAGES_DIR','images/');
?>
のようにすることで利用可能となる

前のエントリで増減をするときの記事を書いたが
デフォルトのCSSをそのまま利用すると
横に幅広いボタンとかが出てしまう
見栄えのために他のinputやtextareaにも100%な設定がしてあるので

デフォルトの
webroot/css/cake.generic.css
からinputを検索して

input, textarea {
    clear: both;
    font-size: 140%;
    font-family: "frutiger linotype", "lucida grande", "verdana", sans-serif;
    padding: 2px;
    /* width: 100%; */
}
のようにwidthの設定をコメント化すると
横幅一杯に表示されなくなる
該当する内容が決まっている場合は、それぞれの箇所で行うか
CSSで重複して設定する事ににより可能

入力フォームで
画像等を複数追加できる場合
足したり引いたり個数を変動させたい場合がある
そのような場合

<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
var arInput = 5; //初期入力フォームの数
var Default = arInput;
function addInput() {
 arInput ++
 $("#area").before('<span id=\"group'+arInput+'\"><input type=text></span>\n');
}
function delInput() {
$("#group"+arInput).remove();
 if(arInput > Default){
  arInput --
 }
}

<div class="file-form">
    <hr id="area" />
  <input type="button" onclick="addInput()" value="+" />
  <input type="button" onclick="delInput()" value="-" />

</div>

$("#area").beforeのところでid=areaの前に追加を行っている



参考にしたサイトが見つからなくなってしまったので
リンク貼ることができませんm(__)m
見つかったら貼ります

Forbidden

You don't have permission to access /index.php on this server.


えっ!

でもってログを見てみれば

Symbolic link not allowed or link target not accessible

はいはい、そういえば、あったな

とapacheの設定を見てみるも

<directory>には

Options FollowSymLinks
と記述されている

記憶を呼び覚ますと、やっと気づいた
ethnaの動作確認で
$ ln -s /home/test/sample/www/index.php .
的なことをやっていたんだが
sampleは755になってるんだけど
その上位のtestが700になってた

gmail設定を終えたらSMTPもgmailを利用したくなったので
設定方法

メールアドレス:gmailのユーザ名@gmail_domain.com
というかgmail又は独自ドメインのアドレスそのものです
ログイン名  :メールアドレス
送信サーバ  :smtp.gmail.com

こんな設定でThunderBirdではいけました