Exemplo n.º 1
0
 public function action_index()
 {
     //ビューに渡すデータの配列を初期化
     $data = array();
     //県のセレクト用のオプション配列の作成
     $prefectures = Model_Prefecture::find('all');
     $pref_op = array();
     foreach ($prefectures as $pref) {
         $pref_op[$pref->pref_num] = $pref->pref_name;
     }
     $data['prefs'] = $pref_op;
     //カテゴリのチェックボックス用のオプション配列の作成
     $categories = Model_Category::find('all');
     $catego_op = array();
     foreach ($categories as $catego) {
         $catego_op[$catego->cate_num] = $catego->cate_name;
     }
     $data['categories'] = $catego_op;
     //タグのセレクト用のオプション配列の作成
     $tags = Model_Tag::find('all');
     $tag_op = array();
     foreach ($tags as $tag) {
         $tag_op[$tag->tag_num] = $tag->tag_name;
     }
     $data['tags'] = $tag_op;
     if (Input::method() == 'POST') {
         /*-------
           ユーザが入力した値とその時の時刻を保持
           --------*/
         $data['input_pref'] = Input::post('pref');
         $data['input_place'] = Input::post('place');
         $data['input_title'] = Input::post('title');
         $data['input_content'] = Input::post('content');
         $data['input_category'] = Input::post('category');
         $data['input_tag1'] = Input::post('tag1');
         $data['input_tag2'] = Input::post('tag2');
         $data['input_rating'] = Input::post('rating');
         $time = Date::forge()->get_timestamp();
     }
     /*--------
        Validationの準備
       ---------*/
     //Validationオブジェクトを呼び出す
     $val = Validation::forge();
     //フォームのルール設定
     $val->add('pref', '県名')->add_rule('required');
     $val->add('place', '場所')->add_rule('required');
     $val->add('title', 'タイトル')->add_rule('required');
     //->add_rule('max_length', 30)
     $val->add('content', '記事内容')->add_rule('required');
     //->add_rule('max_length', 200)
     $val->add('category', 'カテゴリ')->add_rule('required');
     $val->add('tag1', 'タグ1')->add_rule('required');
     $val->add('tag2', 'タグ2')->add_rule('required');
     $val->add('rating', '評価')->add_rule('required');
     /*-----------
       画像ファイルの入力があったらアップロード
       ---------------*/
     //データ保存用変数 初期化
     $upload_file = '';
     if (Input::file('upload.name')) {
         //アップロード用初期設定
         $config = array('path' => DOCROOT . DS . '/assets/img/uimg', 'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'));
         //アップロード基本プロセス
         Upload::process($config);
         //検証
         if (Upload::is_valid()) {
             //設定を元に保存
             Upload::save();
             //保存されたファイル名を変数に入れる
             $getfile = Upload::get_files();
             $upload_file = $getfile[0]['name'];
         } else {
             //ファイルがアップロードできなかったとき、
             //メッセージをフラッシュセッションにセット
             Session::set_flash('uerr', 'ファイルが正しくアップできませんでした。');
             //投稿を中断して入力画面にもどる。
             return View::forge('members/post2', $data, false);
             //Response::redirect(View::forge('members/post2', $data, false));
         }
     }
     //Validationチェック
     if ($val->run()) {
         //ファイルがアップロードされてなかったらダメ
         if ($upload_file == '') {
             $data['error'] = 'ファイルを選択してください。';
             return View::forge('members/post2', $data);
         }
         /*------
           postされた各データをDBに保存
           ----------*/
         //各送信データを配列
         $props = array('uid' => 1, 'pref_num' => $data['input_pref'], 'place' => $data['input_place'], 'title' => $data['input_title'], 'contents' => $data['input_content'], 'category' => $data['input_category'], 'tag1' => $data['input_tag1'], 'tag2' => $data['input_tag2'], 'rating' => $data['input_rating'], 'image' => $upload_file, 'datetime' => $time);
         //モデルオブジェクト作成
         $new = Model_Post::forge();
         $new->set($props);
         //データを保存する
         if (!$new->save()) {
             //保存失敗
             $data['save'] = '正しく投稿できませんでした。';
         } else {
             //保存成功
             /* 本当はユーザの投稿りすとページに飛びたい */
             Response::redirect('members/top');
         }
     }
     //$val->run()ここまで
     //validationオブジェクトをviewに渡す
     $data['val'] = $val;
     return View::forge('members/post2', $data, false);
 }