我尝试在登录/注销之间更改按钮的值,具体取决于会话是否正在进行中。逻辑完美无缺。我遇到的问题是发送实际的"登录"或"退出"从控制器(导航)到视图(导航)的标签。我该怎么做呢?我试过通过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');
}
}
答案 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 } ?>