#php #codeigniter #url-routing
#php #codeigniter #url-маршрутизация
Вопрос:
как мне передать TRUE / FALSE после завершения обновления и перенаправить на Index () и установить
условие $viewdata[‘show’] для добавления моего HTML-кода или что-то в этом роде
Мой контроллер
class Description extends CI_Controller {
public function index()
{
$viewdata['content']=$this->General_model->get_page_uri();
$viewdata['show']=; //where i want to get value when update() method
//pass value so i can show sucess / error message
$this->load->view("backend/content_view",$viewdata);
}
public function update()
{
$title=$this->input->post('txttitle');
if($title != '')
{
if(!$this->update_model->update_all($title))
{
return FALSE;
}
return TRUE;
}
redirect('Admin/Description');
}
}
Моя модель
public function update_all($data)
{
$this->db->set('desc',$data)
->where('desc_id','1');
if(!$this->db->update('tbl_desc'))
{
return FALSE;
}
return TRUE;
}
@Ritesh d joshi это работает, но я сталкиваюсь с проблемой, которую я не могу изменить, когда ошибка обновления я проверяю, чтобы изменить имя моего поля на другое, чтобы проверить возврат false;
Администратор / Описание / обновление
он показывает мне «Произошла ошибка базы данных» с помощью Codeigniter
я не хочу, чтобы это показывало, что я хочу сохранить свою страницу администратора такой же, просто предупредите об ошибке сообщения nomol, которую я установил, чтобы не показывать много информации об ошибке. как я могу предотвратить это или это можно сделать только с помощью Ajax-запроса?
Контроллер index ()
if($show_ses === '0')
{
$viewdata_result = $this->General_model->rk_alert_ok('Successfully Update');
$this->session->set_flashdata('show', 'false');
}elseif($show_ses === '1'){
$viewdata_result=$this->General_model->rk_alert_no('Fail Update Request');
$this->session->set_flashdata('show', '');
}
Обновление контроллера ()
if(!$this->update_model->update_all($title))
{
$this->session->set_flashdata('show', '1');
//1= false
}else{
$this->session->set_flashdata('show', '0');
//0=true
}
Комментарии:
1. Если вы хотите показать какое-то сообщение об успешном завершении, я думаю, вы можете использовать $this->session-> flashdata(‘сообщение’)
2. @SunilPachlangia означает ли это, что я использую $this->session-> flashdata(‘message’) для замены TRUE / FALSE в моем методе update() и перенаправления на index , а $viewdata[‘show’]= этот сеанс? я прав ?
Ответ №1:
Используйте функцию PHP header()
.
header('Location: your_URL');
Обновить:
В CI вы можете использовать redirect()
функцию, этот документ поможет вам понять: http://www.codeigniter.com/user_guide/helpers/url_helper.html
Комментарии:
1.
redirect()
это другое решение. 🙂2. Да. Честно говоря, не заметил, что он использовал codeigniter. 🙂
3. я обновил ваш ответ, вы также можете проверить пример в моем ответе.
Ответ №2:
Пожалуйста, попробуйте это
class Description extends CI_Controller {
public function index()
{
$viewdata['content']=$this->General_model->get_page_uri();
$show= $this->session->flashdata('show');
if($show){
// Here is code for show and message
$viewdata['show']="message";
$this->session->set_flashdata('show', 'false');
}
$this->load->view("backend/content_view",$viewdata);
}
public function update()
{
$title=$this->input->post('txttitle');
if($title != '')
{
if(!$this->update_model->update_all($title))
{
return FALSE;
}
$this->session->set_flashdata('show', 'true');
return TRUE;
}
redirect('Admin/Description');
}
}
Ответ №3:
Вы можете использовать перенаправление в update()
качестве:
public function update()
{
$title = $this->input->post('txttitle');
if($title != '')
{
$status = $this->update_model->update_all($title);
if($status){
redirect(base_url().'index?show=1');
}
else{
redirect(base_url().'index?show=0');
}
}
redirect('Admin/Description');
}
затем вы можете проверить статус в index()
виде:
public function index()
{
$viewdata['content']=$this->General_model->get_page_uri();
if(isset($this->input->post('show')) amp;amp; intval($this->input->post('show')) == 0){
$viewdata['show'] = 1; // if success than show 1
}
else{
$viewdata['show'] = 0; // if error than show 0
}
$this->load->view("backend/content_view",$viewdata);
}
Ответ №4:
Вы можете использовать функцию заголовка, а для ее обнаружения вы также можете передать параметры в GET Url, как показано ниже.
По умолчанию установите статус как FALSE. И вы можете обновить статус в соответствии с вашими условиями либо на FALSE, либо НА TRUE.
public function update()
{
$status = false;
$title=$this->input->post('txttitle');
if($title != '')
{
if(!$this->update_model->update_all($title))
{
$status = FALSE;
return FALSE;
}
$this->session->set_flashdata('show', 'true');
$status = TRUE;
return TRUE;
}
header('Location: abc.php?status='.$status);
}
Надеюсь, это сработает, пожалуйста, дайте мне знать в случае каких-либо недоразумений.