Контроллер Laravel static var всегда null - PullRequest
0 голосов
/ 03 июля 2018

Я пытался объявить статическую переменную, но всегда имеет значение null, я пробую несколько комбинаций и способов без удачи. Я пытаюсь сохранить переменную с некоторыми данными, но я действительно не хочу повторной обработки, если она уже была обработана один раз.

            class PackingController extends Controller
            {
                protected static $i;

                function Process(Request $request)
                {
                    $r = new packing();
                    $v = $r->customer('data','data');
                    $items = $this->startProcess($v,false);
                    return \View::make('list/print',compact('items'));

                }

                private function startProcess($dbitems, $ajust=false)
                {

                //Some logic

                self::$i = $items;
                return $items;

                }

                function printPdf()
                {

                    $items = self::$i;
                    //shows null:
                    dd($items);
                }
            }

Что не так?

Обновление: я пробую синглтон без удачи.

        namespace App\Helper;

        class Items
        {

            private static $_items;
            private static $inst;

            public function setItems($value)
            {
                self::$_items = $value;
            }

            public function getItems()
            {
                return self::$_items;
            }


            public static function Instance()
            {
                if (self::$inst == null) {
                    self::$inst = new Items();
                }

                return self::$inst;
            }

            private function __clone()
            {
            }

            private function __construct()
            {
            }

        }

С синглтоном, все еще null, также попробуйте с одним значением, вместо переменной, без удачи

    class PackingController extends Controller
    {
        protected static $i;


        function GetPackings()
        {
            $s = sales::with('Customer')->where('salestype','=','3')->take(1000)->orderBy('receiptdaterequested','desc')->pluck('salesid','salesid');

            $p = pack::distinct('APPACKINGGROUPID')->pluck('APPACKINGGROUPID','APPACKINGGROUPID')->all();

            return \View::make('listas/index',compact('p','s'));
        }

        function Process(Request $request)
        {
            $r = new packing();
            $v = $r->customer('Mexico','PVE0111998');
            $items = $this->startProcess($v,false);
            return \View::make('listas/print',compact('items'));

        }

        private function startProcess($dbitems, $ajust=false)
        {
            $bultos = 1;

            $items = array();

            foreach ($dbitems as $dbitem)
            {
            //Some process

                $items[]=$item;
            }

            $s = Items::Instance();

            if (count($items) > 0 ) {
                $s->setItems($items);
            }

            return $items;
        }

        function printPdf()
        {
            $s = Items::Instance();
            $s->getItems();

            dd($s->getItems());
        }
    }

1 Ответ

0 голосов
/ 03 июля 2018

Почему вы пытаетесь объявить статическую переменную или singleton для передачи значений между методами ? Может быть, вам следует попробовать сохранить данные в сеансе:

session()->set('items',$dbtitems);

И ...

$items = session()->get('items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...