Пример #1
0
 /**
  * News category edit
  * 
  * @access  public
  * @params  integer
  * @return  Response
  */
 public function action_edit($id = null)
 {
     $news_category = \News\Model_NewsCategory::check_authority($id);
     $val = \Validation::forge()->add_model($news_category);
     if (\Input::method() == 'POST') {
         \Util_security::check_csrf();
         try {
             // 識別名の変更がない場合は unique を確認しない
             if (trim(\Input::post('name')) == $news_category->name) {
                 $val->fieldset()->field('name')->delete_rule('unique');
             }
             if (!$val->run()) {
                 throw new \FuelException($val->show_errors());
             }
             $post = $val->validated();
             $news_category->name = $post['name'];
             $news_category->label = $post['label'];
             \DB::start_transaction();
             $news_category->save();
             \DB::commit_transaction();
             \Session::set_flash('message', sprintf('%sを%sしました。', term('news.category.view'), term('form.edit')));
             \Response::redirect('admin/news/category');
         } catch (\FuelException $e) {
             if (\DB::in_transaction()) {
                 \DB::rollback_transaction();
             }
             \Session::set_flash('error', $e->getMessage());
         }
     }
     $this->set_title_and_breadcrumbs(term('news.category.view', 'form.edit'), array('admin/news' => term('news.view', 'admin.view'), 'admin/news/category' => term('news.category.view')));
     $this->template->post_header = \View::forge('news/_parts/form_header');
     $this->template->post_footer = \View::forge('news/_parts/form_footer');
     $this->template->content = \View::forge('news/category/edit', array('val' => $val, 'news' => $news_category));
 }