在 Codeigniter 中使用控制器的条件

Condition Using Controller in Code Igniter

我正在尝试创建一个函数,它在搜索功能中存在但不存在。条件不存在,会显示错误404。条件,存在。然后它将从搜索中显示。但是在我写的代码中,只显示错误404。

这是我的模型:

    function search_album($keyword){
    $result=$this->db->query("SELECT tbl_album.*,DATE_FORMAT(album_date,'%d %M %Y') AS date FROM tbl_album WHERE album_title LIKE '%$keyword%'");
    return $result;
}

这是我的控制器:

function search(){
    $keyword=str_replace("'", "", $this->input->post('xfilter',TRUE));
    $x['data']=$this->model_album->search_album($keyword);
    if(empty($x)  &&  empty($keyword)){
        $this->load->view('view_contents',$x);
    }
    else if (!empty($x)  &&  !empty($keyword)){
        $this->load->view('view_error_404');
    }
    
}

我已经尝试过 ,但它不起作用。你能帮帮我吗?

您需要在 routes.php 文件中提及搜索功能,如下所示:-

$routes['search'] ='your_controller_name/search';

不知道你的函数 model_album->search_album($keyword) 并假设它 return 是一个字符串或数组,你不需要担心检查关键字,因为没有关键字函数应该 return 假或空。

无论如何你混淆了你的 if/else 条件,因为你正在检查 return 404 的非空结果,而不是 return 404 的空结果。

应该这样做:

if(empty($x)){
    $this->load->view('view_error_404');
}
else {
    $this->load->view('view_contents',$x);
}

您的代码中有几个错误:

ONE: 你已经交换了你的 if 语句。比如,如果搜索没有 return 任何数据并且没有提供关键字,它应该显示“view_error_404”,否则,它应该将数据加载到视图“view_contents”。反之亦然,我已在下面的代码中为您更正了这一点。

TWO: 您正在检查 $x 是否为空,因为您已初始化 $,它永远不会为空x['data']。请注意,该模型可以 return 空数据,例如 $x['data'] 为空。相反,通过将 empty($x) 替换为 empty($x['data'])[ 来检查搜索结果是否为空=13=]

三: 在您的模型中,您正在 return 查询构建器 class,而不是来自查询语句的实际数据。相反,将 return $result; 替换为 return $result->result();

四个: 从您的 if 语句,您需要添加一个 else 语句,以便在永远不满足 2 个条件的情况下执行。在您当前的实施中,有一种状态不满足第一个或第二个条件,将导致黑屏。

if(empty($x['data'])  &&  empty($keyword)){
     $this->load->view('view_error_404');
}else if (!empty($x['data'])  &&  !empty($keyword)){
    $this->load->view('view_contents',$x);    
}else{
    $this->load->view('view_error_404'); // replace this code with your preference
}