Добавить код для работы с другого контроллера - PullRequest
0 голосов
/ 28 декабря 2018

В CodeIgniter Framework у меня есть два файла контроллера: controllerA.php и controllerB.php

Мне нужен controllerB.php, чтобы добавить код в функцию controllerA.php

Я понятия не имею, каксделайте это, я проверил руководство Codeigniter, google и stackoverflow, но не смог найти решение

controllerA.php имеет функцию:

function get_permission_conditions()
{
    return do_action('staff_permissions_conditions', [
        'contracts' => [
            'view'     => true,
            'view_own' => true,
            'edit'     => true,
            'create'   => true,
            'delete'   => true,

]);
}

Я хочу, чтобы controllerB.php связывался с controllerA.phpи добавьте пример пользовательского кода:

function get_permission_conditions()
{

//Code from controllerA.php
    return do_action('staff_permissions_conditions', [
        'contracts' => [
            'view'     => true,
            'view_own' => true,
            'edit'     => true,
            'create'   => true,
            'delete'   => true,

//custom code from controllerB.php goes here

]);
}

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Создайте родительский контроллер для обоих и позвольте им расширить родительский элемент и переместить этот метод к этому родительскому элементу, и пусть родительский элемент расширит CI_Controller .. почти так же, как вы сделали с MY_Controller ...

Это ваш C_Controller (родительский контроллер):

class C_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    // your methods that will be extended
    ...

}

Это ваш A_Controller:

class A_Controller extends C_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
}

Это ваш B_Controller:

class B_Controller extends C_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
}
0 голосов
/ 28 декабря 2018

Вы должны расширить controllerA следующим образом:

class controllerA extends CI_Controller{
    // All the function will go here
    return do_action('staff_permissions_conditions', [
        'contracts' => [
            'view'     => true,
            'view_own' => true,
            'edit'     => true,
            'create'   => true,
            'delete'   => true,

    ]); 
}
class controllerB extends controllerA{
    public $permission_array;
    function __construct() {
        $this->permission_array = $this->do_action();  // Here $permission_array will have the array returned by controllerA's function 'do_action'
    }

    //custom code from controllerB.php goes here
    // You can use $permission all over
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...