Как добавить файл в контроллер в Codeignator? - PullRequest
0 голосов
/ 18 ноября 2018

Я использую 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 голосов
/ 18 ноября 2018

Я думаю, что лучше добавить еще один метод в ваш контроллер

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...