所以我有这个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 已经更新了他的答案以在控制器中设置变量。这是一个很好的榜样。