所以我在我看来有这个IF语句。它可以工作,但是想知道是否有更好的方法来写这个。两个会话调用似乎都不必要......
if($this->session->userdata('campaign_name')){
echo $this->session->userdata('campaign_name');
}
else {
echo 'this';
}
注意此函数将在文本输入中内联使用。所以我正在寻找尽可能少的代码。
答案 0 :(得分:3)
请注意,如果不存在campaign_name
,则CI的Session类的userdata方法将返回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);
}
}
查看(/application/view/test_view.php)
<html>
<head></head>
<body>
<input type="text" value="<?php echo $campaign_name; ?>">
</body>
</html>
答案 1 :(得分:1)
在控制器中,您可以将该会话数据的值存储到变量中,并将其传递给视图。在视图中,您可以使用if else语句来查看变量。我建议不要像RPM那样在视图中设置变量。虽然它有效,但它打破了你所关注的问题。
另外,请考虑在CodeIgniter中使用alternative PHP syntax查看视图。它会使你的代码更整洁,更易于维护。
编辑:我现在看到RPM更新了他在控制器中设置变量的答案。这是一个很好的例子。