Yii Framework : 初期設定からフォーム入力画面作成まで・・・(・ω・`
Yii Frameworkでフォーム入力を実装してみます。
今回はとりあえずプロジェクト作成からインデックスページに入力フォーム表示まで。
入力後の処理はまだ勉強が追いついてないので次回書く予定ですw
■ MySQLデータベースにテーブルt_hoge作成。
(
id INT(11) AUTO_INCREMENT,
hoge_date date,
hoge_name VARCHAR(100),
hoge_text VARCHAR(10),
PRIMARY KEY (id)
)
■ SSHでサーバーに入ってYii Frameworkフォルダに行き、yiicでプロジェクトhoge作成。
■ protected/config/main.phpでサイト名とかパス定義とかgiiアクセスとかDBとか基本内容設定。
基本設定
‘name’=>’ほげサイト’,
‘sourceLanguage’=>’ja’,
‘language’=>’ja’,
‘timeZone’=>’Asia/Tokyo’,
gii設定
‘gii’=>array(
‘class’=>’system.gii.GiiModule’,
‘password’=>’hogehoge’,
// giiにアクセスできるホストはlocalhostとローカルネットワークのみ
‘ipFilters’=>array(‘127.0.0.1′,’192.168.*’,’::1′),
),
),
URLパス設定
// array(‘rules’) に ”=>’hoge/index’,を追加
‘urlManager’=>array(
‘urlFormat’=>’path’,
‘rules’=>array(
”=>’hoge/index’,
‘<controller:\w+>/<id:\d+>’=>'<controller>/view’,
‘<controller:\w+>/<action:\w+>/<id:\d+>’=>'<controller>/<action >’,
‘<controller:\w+>/<action:\w+>’=>'<controller>/<action>’,
),
‘showScriptName’ => false,
),
DB設定
/*
‘db’=>array(
‘connectionString’ => ‘sqlite:’.dirname(__FILE__).’/../data/testdrive.db’,
),
*/
// uncomment the following to use a MySQL database
/**/
‘db’=>array(
‘connectionString’ => ‘mysql:host=localhost;dbname=db_hoge’,
‘emulatePrepare’ => true,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
),
/**/
■ .htaccess設置
Yii FrameworkでurlManagerを有効化した後のYii Code Generatorログイン参照
■ gii Code GeneratorでモデルTHoge・コントローラーHogeController・ビューファイルprotected/views/hoge作成。
ここまでは多分どんなプロジェクト作る時もだいたい一緒だと思います。
こっから下が今回主にやった事です。とりあえず手探りでやっと動くようになった、という状態なので、
なんでこんなことやってんの?という質問には全くお答えしかねます (‘A`)
追記 この次の記事Yii Framework : 入力フォームに入れられた値のajaxを使ったバリデートとページ遷移を参考にした方がいいかもです。
■ コントローラー編集
HogeController内actionIndexを編集
{
// モデル設定
$model = new THoge;// フォーム設定
$form = new CForm(‘application.views.hoge.hogeForm’, $model);// すみません。ちょっとこの辺あやしいです(。。;
if(isset($_POST[‘THoge’]) && $form -> validate()){
$this->redirect(array(‘hoge/hage’));
} else {
$this-> render(‘index’, array(‘form’ => $form));
}
}
上記POSTパラメータ
のTHogeについては、最初何が飛んできてるのかわかんなかったので、後にvar_dump($_POST)で
飛んできてる連想配列名を確認して設定しました(^^;
また、
でフォームビルダを使う為のフォーム定義を読む設定をしてます。
んではその中身を書いていきます。
■ フォーム定義作成
protected/views/hoge/hogeForm.php
<?php
return array(‘title’=–>’ほげほげ情報を入力してください’,
‘elements’=>array(
‘hoge_date’=>array(
‘type’=>’text’,
),
‘hoge_name’=>array(
‘type’=>’text’,
‘maxlength’=>100,
),
‘hoge_word’=>array(
‘type’=>’text’,
‘maxlength’=>10,
),
‘hoge_type’=>array(
‘type’=>’dropdownlist’,
‘items’=>THoge::model()->getHogeListOptions(),
),
),
‘buttons’=>array(
‘login’=>array(
‘type’=>’submit’,
‘label’=>’発射’,
),
),
);
?>
使う入力フォームをelements内に書きます。ただし一番最後のhoge_typeはDBで定義していないパラメータです。
よってこの定義をモデルTHoge内に書きます。またhoge_typeはドロップダウンリスト形式のフォームを使うよう設定したので、
その内容を定義するメソッドgetHogeListOptions()も書きます。
■ モデル編集
protected/models/THoge.php
class THoge extends CActiveRecord内に以下を追加
{
return array(
0 => ‘かっこいいほげ’,
1 => ‘かわいいほげ’,
2 => ‘いかしたほげ’,
);
}
同モデルクラス内、public function rules()の配列に以下を追加
同モデルクラス内、public function attributeLabels()の配列に以下を追加
ビューを書いていきます。
■ ビュー編集
protected/views/hoge/index.php
<h1>ほげフォーム</h1>
<div class=”form”>
<?php echo $form; ?>
</div>
なお、今回はレイアウトファイルprotected/views/layout/main.phpからパンくずとかナビとか使わないものは消しました。
また、このビューファイルindex.phpはデフォルトでシステムから作成されますが、ここからもいらないものは消してあります。
ここまででとりあえず入力フォームが表示できました。(これが正しいかどうかは分かりませんが^^;)
今のとこまだあまりフレームワークでよかったてのはありませんねw
多分恩恵を受けていくのはAJAXでバリデーションをするとか、この後の処理からだと思います。
まだ初心者なのでわかんないことだらけですが、ぼちぼちと書いていきます。
Packt Publishing
売り上げランキング: 444,079
コメントを残す