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); }
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); }
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); }