使用控制器中的逻辑获取CodeIgniter中要更改的按钮值?

时间:2018-03-12 23:28:34

标签: php codeigniter

我尝试在登录/注销之间更改按钮的值,具体取决于会话是否正在进行中。逻辑完美无缺。我遇到的问题是发送实际的"登录"或"退出"从控制器(导航)到视图(导航)的标签。我该怎么做呢?我试过通过TPL发送,但按钮是空白的(虽然点击后功能)。

控制器:

 ^[(6011|65|64[4-9]|622)(\d{1,4})]{16}$

视图:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

  // start the session
if(isset($_SESSION)){
    session_start();
  }

var $TPL = array();

if(isset($_SESSION["accesslevel"])){
  $this->TPL["outPut"] = "Logout";
}
else{
  $this->TPL["outPut"] = "Login";
}




class Navigation extends CI_Controller {

    public function index()
    {
        $this->template->show('navigation');
    }
}

2 个答案:

答案 0 :(得分:2)

您的视图中是否可以访问$ output?

您需要将$ TPL从控制器传递到您的视图并在构造函数中写入会话代码。

构造函数:

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Navigation extends CI_Controller {

        private $TPL = array();

        function __construct() {

            parent::__construct();

            if(isset($_SESSION["accesslevel"])){
              $this->TPL["outPut"] = "Logout";
            }
            else{
              $this->TPL["outPut"] = "Login";
            }

        }

        public function index()
        {
            $this->template->show('navigation', $this->TPL);
        }
    }

答案 1 :(得分:0)

为什么不查看是否有会话?如果答案是肯定的,则表示用户已登录,您将向他显示注销按钮,否则您将向他显示登录按钮。

  <?php if ($this->session->userdata('id')){ ?>
    <div class="float-right">
    <ul class="navbar-nav mr-auto">
        <li class="nav-item">
          <?php echo anchor('User/user_profile/'.$this->session->userdata('id'), 'My profile', array('class' => 'nav-link')); ?>
        </li>  
        <li class="nav-item">
          <?php echo anchor('User/logout', 'Log out', array('class' => 'nav-link')); ?>
        </li>  
      </ul>
  </div>

  <?php }else{ ?>

    <div class="float-right">
    <ul class="navbar-nav mr-auto">
        <li class="nav-item">
          <?php echo anchor('User/login', 'Login', array('class' => 'nav-link')); ?>
        </li>
        <li class="nav-item">
          <?php echo anchor('User/register', 'Register', array('class' => 'nav-link')); ?>
        </li>      
      </ul>
  </div>

  <?php } ?>