Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

CakePHP

ビルトインサーバー

./bin/cake server で、http://localhost:8765/ にアクセス。

テーブルを連携させる

2つのテーブルの連携を考える。 peapleテーブル(personの複数形) id INT,プライマリキー,AutoIncrement name Text, Not Null, Unique password Text, Not Null comment Text, Null boardsテーブル id Int,プライマリキー,AutoIncrement person_id Not Null …

bake

bookモデルを作りそのCRUDをbakeで作る。 データベースでbooksテーブル作成 id 整数、プライマリー、自動インクリメント title テキスト author テキスト price 整数 bake $ ./bin/cake bake all books しかし失敗する Exception: SQLSTATE[HY000] [2002] Co…

データベース操作

レコード追加 テンプレー側にフォームを用意 Form->Create($entity, ['url'=>['action'=>'addRecord']]) ?> <fieldset> Form->text("name") ?> Form->text("title") ?> Form->textarea("content") ?> </fieldset> Form->button("送信") ?> Form->end() ?> コントローラにaddRecord…

500エラー

PHPでエラーがみたい php.iniファイルで error_reporting = E_ALL display_errors On display_startup_errors = On 公開用サーバではlog_errorsでログでみるべき。 internal error 500 新しくプロジェクトを作ったところそのようなエラーがでた。 ログを確認…

MySQL

phpMyAdminがつかえるとして以下話をする。MySQLにパスワードを設定している場合は phpMyAdmin/config.inc.php の $cfg['Servers'][$i]['user'] = '*****'; $cfg['Servers'][$i]['password'] = '****'; を設定する。 phpMyAdminでデータベース作成 mydata 照…

おさらい

いままでのおさらい。 プロジェクト作成 mkdir hoge php composer.phar create-project --prefer-dist cakephp/app hoge Hello World hello/other

HTMLヘルパーでテーブルを作る

テーブルをガリガリと書く方法とHTMLヘルパーを使って各方法を2つ並べて書いてみた。 <h1> データ </h1> <table> <thead> <tr> <th>ID</th> <th>NAME</th> <th>TITLE</th> <th>CONTENT</th> </tr> </thead> <tbody> <tr> <td> id ?> </td> <td> name) ?></td> <td> title) ?></td> <td> </td></tr></tbody></table>

SQLiteの用意

CakePHPはデータベースやテーブルの設定を自分でする必要がある。大変面倒だがまずSQLiteでやってみることにする。 アプリ(例hoge)内にdbフォルダを作る(hoge/db)。 SQLiteのデータベースを作成する。 sqlite3起動 $ sqlite3 mydata sqlite> create table 'b…

モデル = テーブル+エンティティ

CakePHPのモデルとはテーブルとエンティティの全体を指して使う。以下のようなモデルを作ろう。識別用のIDを持ち、投稿者名とタイトルと投稿内容を持っている情報(エンティティ)とそのエンティティの集団(テーブル)。 このモデルを「Board」と名付けよう。命…

フォームヘルパーを使う

テンプレートに次のように記述。 <p> ヘルパーを使ったフォームの送信</p> <p> </p> Form->create(null, ['type' => 'post', 'url' => ['controller' => 'Hello', 'action' => 'index']]) ?>

AppController->request連想配列

AppControllerのrequestはCakeRequestクラス。request[種類][キー]で情報が取得できる。種類は params 送信された値すべて data POSTされた際の内容 query クエリー url 送信アドレス base ベースのディレクトリ webroot webrootディレクトリ here 現在のア…

フォーム

フォームをテンプレートに用意 <form method="get" action="/hello/sendForm"> <input type="text" name="text1" /> <inout type="submit" /> </form> フォームを送った先 <h1>送信結果</h1> <p></p> ファイル名はsend_form.ctpとする。クラス、メソッド名はキャメル記法なのに対し、アンダースコア記法であることが注意するところ。コントローラにhello/sendFormのアクションを書く

値の受け渡し

コントローラからテンプレートへ値をセットするには $this->set('poi',10); これでテンプレートでは$poiに10が入る。 <p> </p>

エレメント

レイアウトにはめ込んで使える。Templete/Elementフォルダにいれておき、 element("hoge") ?> で読み込める。 値をわたしたければ element("hoge", ['x'=>10,'y'=>5]) ?> のように渡す。色々部品化しておくと良いようだ。

レイアウト

使用するスタイルシートwebroot/css/cake.hello.cssを用意する。 body { background: #eee; color: #999; margin: 10px 8px } #header { font-size: 18pt; font-weight: bold; margin: 10px; } #content { background: #fff; color: #999; padding: 10px 25p…

テンプレート

src/Template/Hello/index.ctpを作ってテンプレートを以下のように用意 <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Hello Page</title> </head> <body> <h1>midashi</h1> <p> hello hello </p> </body> </html> コントローラ側でautoRenderをtrueにしてテンプレートを読み込む。

フォワードとリダイレクト

setAction(other); } public fun…

Hello World

/helloにアクセス /hello/otherにアクセス