如何在Codeignator的控制器中添加文件?

时间:2018-11-18 05:51:15

标签: php codeigniter-3

我正在使用Codeignator。我的问题是,如何在控制器中添加文件?

让我们详细解释

我在控制器中有类似下面的代码。只需注意if-else条件是两次。

foreach($order_list as $order) {
    if (is_array($order)) {
        foreach($order as $r) {
            if ($r - > status == -1) {
                //button
            } elseif($r - > status == 1) {
                //button
            } elseif($r - > status == 2) {
                //button
            } elseif($r - > status == 3) {
                //button 
            } else {
                //button
            }
            // It will increase more in future
        }
    } else {
        // same if-else code 
        if ($r - > status == -1) {//button}
        elseif($r - > status == 1) {//button}
        elseif($r - > status == 2) {//button}
        elseif($r - > status == 3) {//button }
        else {//button}
        // It will increase more in future
    }
}

所以我想,我将创建一个新文件并添加类似这样的文件

foreach($order_list as $order) {
    if (is_array($order)) {
        foreach($order as $r) {
            //externalfile.php
        }
    } else {
       //externalfile.php
    }
}

externalfile.php

if ($r - > status == -1) {
    //button
} elseif($r - > status == 1) {
    //button
} elseif($r - > status == 2) {
    //button
} elseif($r - > status == 3) {
    //button
} else {
    //button
}

为什么要这样做是因为我不知道增加行数,并且我不想在未来两次更改任何条件或文本或任何HTML。

您会帮我解决任何其他想法吗?

实际代码。

foreach($order_list as $order) { 
    if(is_array($order)){
        foreach($order as $r) {
            $encryption_id=base64_encode($this->encryption->encrypt($r->cust_id));
            $this->myCode($r);//added here
            $data[] = array(
                "Sr_No" => $n,
                "cust_id" =>$encryption_id,//encrpt the id 
                "Name"=>$r->c_firstname."".$r->c_lastname
            );
            $n++;
        }
    } else{
       $this->myCode($r);//added here
    }
}

public function myCode($status) {
    if ($status== -1) {
        $order_status='<a href="#">Action name</a>';
    } elseif($status == 0) {
        $order_status='<a href="#">Action name</a>';
    } elseif($status == 1) {
        $order_status='<a href="#">Action name</a>';
    } else {
        $order_status='<a href="#">Action name</a>';
    }
}

1 个答案:

答案 0 :(得分:0)

我认为最好向控制器添加另一种方法

public function myCode($status) {

 if ($status == -1) {//button}
 elseif($status == 1) {//button}
 elseif($status == 2) {//button}
 elseif($status == 3) {//button }
 else {//button}
}

您应该将其命名为:

 $this->myCode($order_list);

例如:

foreach($order_list as $order) {
    if (is_array($order)) {
       foreach($order as $r) {
            $this->myCode($r);
            //some else
       }
    } else {
        $this->myCode($order);
    }
}