Exemple #1
0
 public function action_index()
 {
     //ビューに渡すデータの配列を初期化
     $data = array();
     //県のセレクト用のオプション配列の作成
     $prefectures = Model_Prefecture::find('all');
     $pref_op = array();
     foreach ($prefectures as $pref) {
         $pref_op[$pref->id] = $pref->name;
     }
     $data['prefs'] = $pref_op;
     //カテゴリのチェックボックス用のオプション配列の作成
     $catego_op = array('何かを学ぶ旅' => '何かを学ぶ旅', '温泉でゆったりする旅' => '温泉でゆったりする旅', 'テーマパーク・アミューズメントの旅' => 'テーマパーク・アミューズメントの旅', '大自然にふれる旅' => '大自然にふれる旅', '街並みを楽しむ旅' => '街並みを楽しむ旅', 'グルメな旅' => 'グルメな旅', '平和について考える旅' => '平和について考える旅');
     $data['categories'] = $catego_op;
     //入力チェックのためのvalidationオブジェクトを呼び出す
     $val = Validation::forge();
     //
     $val->add('pref', '県名')->add_rule('required');
     $val->add('place', '場所')->add_rule('required');
     $val->add('title', 'タイトル')->add_rule('required');
     $val->add('content', '記事内容')->add_rule('required');
     $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');
     //validationチェック
     if ($val->run()) {
         /*-----------
           画像ファイルの入力があったらアップロード
           ---------------*/
         //データ保存用変数 初期化
         $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', 'ファイルが正しくアップできませんでした。');
                 //投稿を中断して入力画面へリダイレクト
                 Response::redirect('members/post2');
             }
         }
         /*------
           postされた各データをDBに保存
           ----------*/
         if ($upload_file == '') {
             Session::set_flash('uerr', 'ファイルを選択してください。');
             //投稿を中断して入力画面へリダイレクト
             Response::redirect('members/post2');
         }
         //各送信データを配列
         $props = array('user_id' => 1, 'pref_id' => Input::post('pref'), 'place' => Input::post('place'), 'title' => Input::post('title'), 'content' => Input::post('content'), 'category' => Input::post('category'), 'tag1' => Input::post('tag1'), 'tag2' => Input::post('tag2'), 'rating' => Input::post('rating'), 'image' => $upload_file);
         //モデルオブジェクト作成
         $new = Model_Post::forge($props);
         //データを保存する
         if (!$new->save()) {
             //保存失敗
             $data['save'] = '正しく投稿できませんでした。';
         } else {
             //保存成功
             $data['save'] = '投稿されました。';
         }
     }
     //$val->run()ここまで
     //validationオブジェクトをviewに渡す
     $data['val'] = $val;
     /*---------------
        投稿済みのデータをDBから取得
       -------------*/
     /*$data['posts'] = 
       Model_Post::find('all', array(
           'order_by' => array(
               'created_at' => 'desc'
               )));*/
     return View::forge('members/post2', $data);
 }
Exemple #2
0
 public function action_index()
 {
     //Model_Postオブジェクトを新規作成
     $post = Model_Post::forge();
     $post->user_id = 1;
     //県のセレクト用のオプション配列の作成
     $prefectures = Model_Prefecture::find('all');
     $pref_op = array();
     foreach ($prefectures as $pref) {
         $pref_op[$pref->id] = $pref->name;
     }
     //カテゴリのチェックボックス用のオプション配列の作成
     $categories = array('何かを学ぶ旅' => '何かを学ぶ旅', '温泉でゆったりする旅' => '温泉でゆったりする旅', 'テーマパーク・アミューズメントの旅' => 'テーマパーク・アミューズメントの旅', '大自然にふれる旅' => '大自然にふれる旅', '街並みを楽しむ旅' => '街並みを楽しむ旅', 'グルメな旅' => 'グルメな旅', '平和について考える旅' => '平和について考える旅');
     //タグのチェックボックス用のオプション配列の作成
     $config = array('path' => DOCROOT . DS . '/assets/img/uimg', 'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'));
     //Fieldsetオブジェクトにモデルを登録
     $fieldset = Fieldset::forge('fset', $config)->add_model('Model_Post');
     //県名選択を登録
     $fieldset->add_before('prefid', '県名', array('type' => 'select', 'options' => $pref_op), array('required', 'in_array' => $pref_op), 'place');
     //カテゴリ選択を登録
     $fieldset->add_before('category2', 'カテゴリ', array('type' => 'select', 'options' => $categories), array('required', 'in_array' => $categories), 'tag1');
     //ファイルアップロードを登録
     $fieldset->add_after('imagefile', '写真', array('type' => 'file'), array('required'), 'rating');
     //$fieldset->field('imagefile')->set_attribute('form_attributes',array('enctype'=>'multipart/form-data'));
     //投稿ボタンを登録
     $fieldset->add_after('submit', '', array('type' => 'submit', 'value' => '投稿'), array(), 'rating');
     //モデルの値をFieldsetに登録
     $fieldset->populate($post, true);
     //$form = $fieldset->form();
     //$form['imagefile']->set_config('form_attributes', array('enctype'=>'multipart/form-data'));
     //POSTの場合は登録処理を行う
     if (Input::method() == 'POST') {
         //Validationの実行
         if ($fieldset->validation()->run()) {
             if (Input::post('imagefile')) {
                 Upload::process($config);
                 if (Upload::is_valid()) {
                     Upload::save();
                     $getfile = Upload::get_files();
                     $file = $getfile[0]['name'];
                 } else {
                     //ファイルがアップロードできなかったとき、メッセージをフラッシュセッションにセット
                     Session::set_flash('uerr', 'ファイルが正しくアップできませんでした。');
                     //投稿を中断して入力画面へリダイレクト
                     Response::redirect('members/postfieldset');
                 }
             }
             var_dump($file);
             exit;
             //Validationに成功したフィールドの読み込み
             $fields = $fieldset->validated();
             //Model_Postオブジェクトの生成
             $post = Model_Post::forge();
             //Model_Postオブジェクトのプロパティの設定
             $post->user_id = $fields['user_id'];
             $post->pref_id = $fields['prefid'];
             $post->place = $fields['place'];
             $post->title = $fields['title'];
             $post->content = $fields['content'];
             $post->category = $fields['category2'];
             $post->tag1 = $fields['tag1'];
             $post->tag2 = $fields['tag2'];
             $post->rating = $fields['rating'];
             $post->image = $file;
             if ($post->save()) {
                 Response::redirect('members/top');
             } else {
                 //入力エラーがある場合は元の入力画面にもどるため
                 //入力した内容をそのまま引き継ぐ
                 $fieldset->repopulate();
             }
         }
     }
     //ビューの生成とbuild()したHTMLの埋め込み
     /* 本当は、members/postlist に飛びたい */
     $view = View::forge('members/postfieldset');
     $view->set('form', $fieldset->build(), false);
     return Response::forge($view);
 }
Exemple #3
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);
 }