会话的 IF 语句 - 格式化 Q



所以我有这个IF语句。 它有效,但想知道是否有更好的方法来写这个。同时进行两个会话调用似乎没有必要...

if($this->session->userdata('campaign_name')){
    echo $this->session->userdata('campaign_name');
}
else {
    echo 'this';
}

请注意,此函数将在文本输入上内联使用。所以我正在寻找尽可能少的代码。

请注意,如果不存在campaign_name,CI 的会话类的用户数据方法将返回 false。因此,将变量分配给可能未定义的数组键 (campaign_name)

$campaign_name = $this->session->userdata('campaign_name');
if($campaign_name)
{
    echo $campaign_name;
}
else
{
    echo 'this';
}

if($campaign_name = $this->session->userdata('campaign_name'))
{ 
   echo $campaign_name;
}

控制器方法 (/application/controllers/test_controller.php)

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
    class Test_Controller extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
        }
        public function myFunction()
        {
            $data['campaign_name'] = $this->session->userdata('campaign_name');
            $this->load->view('test_view',$data);
        }
    }
视图 (/应用程序/

视图/test_view.php)

<html>
<head></head>
<body>
     <input type="text" value="<?php echo $campaign_name; ?>">
</body>
</html>

在控制器中,您可以将该会话数据的值存储到变量中,并将其传递给视图。在视图中,您可以拥有仅查看变量的 if else 语句。我建议不要像 RPM 那样在视图中设置变量。虽然它有效,但它打破了你关注点的分离。

另外,研究在CodeIgniter中对视图使用替代PHP语法。它将使您的代码更整洁,更易于维护。

编辑:我现在看到 RPM 已经更新了他的答案以在控制器中设置变量。这是一个很好的榜样。

最新更新