【问题标题】:How to show message on view in codeigniter?如何在codeigniter中显示消息?
【发布时间】:2012-08-29 08:03:23
【问题描述】:

我想在重定向链接上显示内容更新的成功消息。这是我的控制器代码:-

public function add_content()
        {
        $this->load->helper('url');
    $id=$this->input->post('id');
        $content=$this->input->post('content');
        $title=$this->input->post('title');
        $this->load->model('admin/contentmodel');
    $status=$this->contentmodel->addcontent($id,$title,$content);
        if($status==1)
           {
            $this->session->set_flashdata("message","<font class='success'>Content Successfully Updated..!!</font>");
            redirect('admin/login/dash');
            }
        else
          {
           $this->session->set_flashdata("message","<font class='success'>Content Not Updated..!!</font>");
           redirect('admin/content/home');
          }
        }

我的内容已成功更新,现在我想在特定重定向链接上向用户显示消息。为此,我在上面的代码中设置了消息:

$this->session->set_flashdata("message","<font class='success'>Content Successfully Updated..!!</font>");

所以你们能否让我知道我哪里出错了,我如何在视图上显示错误消息?当我的重定向转到控制器时 - >而不是在视图上。所以我怎样才能从控制器中流出我的错误消息->查看。提前致谢。

【问题讨论】:

  • 你加载会话库了吗??

标签: php codeigniter message


【解决方案1】:

打开application/config/config.php 并编辑该行:

$config['encryption_key'] = '';

通过向字符串添加一些随机值

$config['encryption_key'] = 'q0231sz!!1@asd';

之后,当您使用

设置消息时
$this->session->set_flashdata('key', 'value');

在您的视图文件中简单地回显

echo $this->session->flashdata('key');

请注意,这不会在此加载时回显您的'value',但会在您刷新页面后回显它

$this->session->set_flashdata('mykey', 'testing');
echo $this->session->flashdata('mykey'); // will echo '' (nothing)

【讨论】:

  • 谢谢,现在没有错误显示,但你能告诉我如何在视图中显示错误消息吗?
  • 它在视图上给出错误:未定义的属性:CI_Loader::$session 并在 /opt/lampp/htdocs/Harshal/first_ci/application/ 中的非对象上调用成员函数 flashdata()第 31 行的views/admin/admin_content.php
  • 我刚刚回显了 session->flashdata('message'); ?>
  • @HarshalMahajan 该错误意味着您应该加载会话类:$this-&gt;load-&gt;library('session');
【解决方案2】:

您的问题中指出了您的错误的解决方案:

为了使用 Session 类,您需要在配置文件中设置加密密钥。

【讨论】:

    【解决方案3】:

    您可以将控制器设置为,

    $this->data['errormsg'] = "message";
    

    然后将视图设置为

      echo isset($errormsg)?$errormsg:"" ;
    

    【讨论】:

      【解决方案4】:
      /* Do this in controller */
      
      //This should have message you needed. Try logging in file for testing
      $message = $this->session->flashdata("message");
      
      $data["message"] = $message;
      
      $this->load->view("yourview",$data);
      
      /* Do this in your view */
      
      echo $message;
      

      【讨论】:

        【解决方案5】:
        **Set flash data in controller**
        
        message - flash data session name. 
        
        $this->session->set_flashdata('message', 'Sucessfully updated.');
        
        Read flash data(Pass in view with bootstrap alert)
        
         <?php if($this->session->flashdata('message')){?>
           <div class="alert alert-success">      
            <?php echo $this->session->flashdata('message')?>
         </div>
         <?php } ?>
        

        【讨论】:

          【解决方案6】:

          将以下代码添加到您的控制器/模型中:-

          if($status==1)
          {
               $data=array(
                   'class' => 'success',
                   'message' => 'Content Successfully Updated..!!'
               );
               $this->session->set_flashdata("dash",$data);
               redirect('admin/login/dash');
          }
          else
          {
               $data=array(
                   'class' => 'danger',
                   'message' => 'Content Not Updated..!!'
               );
               $this->session->set_flashdata("dash",$data);
               redirect('admin/content/home');
          }
          

          将以下代码添加到您的视图中:-

          if($this->session->has_userdata('dash'))
          {
             echo '<div class="alert alert-'.$this->session->dash['class'].'">'.$this->session->dash['message'].'</div>';
          }
          

          【讨论】: