可以在CodeIgniter Views上放置条件逻辑吗?

Erm*_*mir 5 php templates codeigniter

所以我现在处于两难境地.我想在我的网站上实现一个登录按钮,该按钮在没有用户登录时出现.但是,如果某人已经登录,我希望该按钮更改为用户个人资料的链接.

我不知道这样做的正确方法是在视图中放置一个if语句,根据从Controller传递的数据呈现不同的HTML,或者Controller是否需要确定用户是否已登录,并将适当的数据结构传递给View.在CodeIgniter中执行此操作的正确方法是什么?

ABo*_*rty 5

在 Codeigniter 中,您可以查看 if 和 else 语句。

if($this->session->userdata('your_session_variable'))
{
    ?>
    <a href="profile_page_link">Profile</a>
    <?php
}
else
{
    ?>
    <a href="login_page_link">Login</a>
    <?php
}
Run Code Online (Sandbox Code Playgroud)


Has*_*ami 4

控制器用于计算和操作数据并将结果传递给视图,视图获取结果并将其呈现为 HTML。

如果您应该if在视图中使用语句来显示或隐藏某些标记,这是允许的!

但如果更改部分包含大量信息,我建议使用部分视图并将其内容作为变量传递给主视图。并在控制器中完成所有这些操作。

要在 CodeIgniter 中执行此操作:

控制器:

class Foo extends CI_Controller {
    public function bar()
    {
        // prevent getting error.
        $data['partial'] = '';

        // check if user is logged in.
        if ($this->session->userdata('user_id') == TRUE) {
            $data['partial'] = $this->load->view('partial/baz', '', TRUE);
        } else {
            $data['partial'] = $this->load->view('partial/qux', '', TRUE);
        }

        $this->load->view('my_view', $data);
    }
}
Run Code Online (Sandbox Code Playgroud)

假设: user_id当用户登录时在 CI 会话中设置。

看法:

<?php echo $partial; ?>
Run Code Online (Sandbox Code Playgroud)