iT邦幫忙

0

在CI 架構中,在後台做出預覽功能看前台的view

昌昌 1 月前5330 瀏覽

最近因為有某些公司要求,要做出後台預覽功能看前台的顯示狀況

所以我上網爬了很多文章也問了很多的人,大家秉持的方式都不一樣

1.如果不需要表單刷新送出的話,用Ajax是不錯的選擇
2.如果用存html的話,就是得在form內多寫一個target='black' 讓表單額外再開一個顯示

另外感謝『IT邦幫忙』的tzuchin大大給我靈感,所以我用2的方法來弄!!!

在viewz方面

1.先設一個隱藏值,等等傳值到controller時會用到!!
2.在js中下一個判斷,如果按下預覽功能,則會跑出新的頁面
3.如果單純只是要表單送出,就直接按submit就好

<?=form_open_multipart(admin_url('posts/edit/'.$cat.'/'.$item->id),$attributes);?>

<input type="reset" onClick="history.back();" value="回上頁" />
<input type="submit"  value="確定送出"/>
<input type="button" value="預覽頁面(測試)" id="button" name="button"  onclick="preview()"  />
<input type="hidden" name="count" id="count" value="1">

<?=form_close();?>

<script type="text/javascript">
  function preview(){
    var x =document.getElementById('count').value;
    x = x + 1 ;
    document.forms['form12'].setAttribute("target","_blank");
    document.forms['form12'].submit();    
  }
</script>

在controller方面

1.用if判斷在view的隱藏值為何
2.將要用的值帶入並送到前台顯示

public function edit() {
  if($this->input->post('count') !=1){   判斷是按預覽button還是``送出的submit
     if ($this->form_validation->run() == true) {.....  ));
       $this->session->set_flashdata('message', $this->lang->line('success_edit'));
       redirect(admin_url("posts/index/$cat"), 'refresh');
   } else {
     $data = array( ....);
     $this->template->render('admin/post/'.$cat.'/edit', $data);  表單送出
   }
}else{
  $data = array(....);
  $view_data = array(....);
  $this->load->view(....);   預覽功能顯示
}
}

感謝各位的閱讀,以上是小弟第一次發文的
還請各位大大多多指教:D


1 則留言

0
昌昌
iT邦新手 5 級 ‧ 1 月前

後來改用switch來寫

switch (variable) {
  case 'value':
    # code...
    break;
  
  default:
    # code...
    break;
}

我要留言

立即登入留言