所以我在我的控制器中有这个代码块(我知道,db的东西应该在模型中..我会在那里工作后转移它).在数据库中搜索"订阅"并在视图中回显.这样可行.但是,在我看来,我想添加一个IF语句,如下面的第二个代码块 - 但它不起作用.建议?换句话说,您如何在视图中编写IF语句?很确定这个query部分是不正确的......
// displays current subscription in view
$userid = $this -> session -> userdata('user_id');
$this -> db -> select('subscription');
$this -> db -> where ('id', $userid);
$query = $this -> db -> get('subscriptions');
if($query -> result() == TRUE) // if subscription exists for user, display:
{
foreach ($query->result() as $row)
{
$data['packagename'] = $row->subscription;
}
}
Run Code Online (Sandbox Code Playgroud)
在视图中:
<?php if($query -> result() == TRUE) : ?>
<? echo $packagename; ?>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)
$query->result() 不返回布尔值,它返回一个数组ob对象.
要检查查询是否返回结果,请使用num_rows().
if($query->num_rows() > 0){
foreach ($query->result() as $row){
}
}
Run Code Online (Sandbox Code Playgroud)
此外,您不应将$query对象传递给视图,而是使用isset以查看变量是否存在:
<?php if(isset($packagename)): ?>
<?php echo $packagename; ?>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)
让您的数据库逻辑远离您的视图,这就是模型的用途.如果您已将$ packagename传递到视图中,为什么不简单地测试呢?
<?php if ( isset($packagename) ) : ?>
<? echo $packagename; ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以使用short_open_tags:
<? if ( isset($packagename) ) : ?>
<?= $packagename ?>
<? endif; ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |