Перенаправление идет пустая страница без перенаправления на маршрут Laravel 5.8 - PullRequest
0 голосов
/ 12 июня 2019

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

контроллер


    public function saveMachine(Request $request) { 
        $number_of_lockers = $request->number_of_lockers;
        if($number_of_lockers == '32') {
            $a_machine = A_Machine::all();
            if($a_machine->isEmpty()) {
                $this->saveFirstMachine(32, $request);
            } else {
                $this->saveNewMachine(32, $request);
            }
        } else if($number_of_lockers == '64') {
            $a_machine = B_Machine::all();
            if($a_machine->isEmpty()) {
                $this->saveFirstMachine(64, $request);
            } else {
                $this->saveNewMachine(64, $request);
            }
        } else if($number_of_lockers == '128') {
            $a_machine = C_Machine::all();
            if($a_machine->isEmpty()) {
                $this->saveFirstMachine(128, $request);
            } else {
                $this->saveNewMachine(128, $request);
            }
        }
    }

    private function saveNewMachine($number_of_lockers, $request) {
        $machine = null;
        $machine_code = '';
        $locker_start=0;
        $locker_end=0;
        if($number_of_lockers == 32) { 
            $machine = new A_Machine;
            $date = \Carbon\Carbon::now()->format('Y-m-dH:i:s');
            $machine_code = 'm032'.str_replace(array('20', '-', ':'), array('', '', ''), $date);
            $last_record = $machine->all()->last();
            $last_locker_end = $last_record->locker_end;
            $locker_start = $last_locker_end + 1;
            $locker_end = $locker_start + 31;
        }
        if($number_of_lockers == 64) { 
            $machine = new B_Machine;
            $date = \Carbon\Carbon::now()->format('Y-m-dH:i:s');
            $machine_code = 'm064'.str_replace(array('20', '-', ':'), array('', '', ''), $date);
            $last_record = $machine->all()->last();
            $last_locker_end = $last_record->locker_end;
            $locker_start = $last_locker_end + 1;
            $locker_end = $locker_start + 63;
        }
        if($number_of_lockers == 128) { 
            $machine = new C_Machine;
            $date = \Carbon\Carbon::now()->format('Y-m-dH:i:s');
            $machine_code = 'm128'.str_replace(array('20', '-', ':'), array('', '', ''), $date);
            $last_record = $machine->all()->last();
            $last_locker_end = $last_record->locker_end;
            $locker_start = $last_locker_end + 1;
            $locker_end = $locker_start + 127;
        }

        $machine->vendor_id = $request->vendor_id;
        $machine->locker_start = $locker_start;
        $machine->locker_end = $locker_end;
        $machine->machine_code = $machine_code;
        $machine->qr_code = 'test code';
        $machine->temperature = '123';
        $machine->humidity = '123';
        $machine->fan_status = 'off';

        if($machine->save()) {
            $saved = $this->saveLocker($number_of_lockers, $machine->id);
            if($saved) {
                return redirect()->route('create_machine')->with('success','A New Machine with '.$number_of_lockers.' Lockers Added Successfully');
           }
        }
    }


    private function saveLocker($number_of_lockers, $machine_id) {
        $lockers = [];
        if($number_of_lockers == 32) {
            for ($i=0; $i < 32  ; $i++) { 
                $lockers[$i]['machine_id'] = $machine_id;
                $lockers[$i]['product_id'] = 0;
                $lockers[$i]['created_at'] = now();
                $lockers[$i]['updated_at'] = now();
            }

            return DB::table('a_machine_lockers')->insert($lockers);
        }
        if($number_of_lockers == 64) {
            for ($i=0; $i < 64  ; $i++) { 
                $lockers[$i]['machine_id'] = $machine_id;
                $lockers[$i]['product_id'] = 0;
                $lockers[$i]['created_at'] = now();
                $lockers[$i]['updated_at'] = now();
            }

            return DB::table('b_machine_lockers')->insert($lockers);
        }
        if($number_of_lockers == 128) {
            for ($i=0; $i < 128  ; $i++) { 
                $lockers[$i]['machine_id'] = $machine_id;
                $lockers[$i]['product_id'] = 0;
                $lockers[$i]['created_at'] = now();
                $lockers[$i]['updated_at'] = now();
            }

            return DB::table('c_machine_lockers')->insert($lockers);
        }
    }

лезвие

@if(session('success'))
<div class="alert alert-success alert-dismissible fade show mb-4" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">×</span>
        </button>
        <i class="fa fa-check mx-2"></i>
        {{ session('success') }}
</div>
@endif

В основном предыдущийМаршрут страницы:

Route::get('create_machine', 'AdminController@createMachine')->name('create_machine');

, который использует метод контроллера:

public function createMachine() {  
        $vendors = \App\Vendor::all(); 
        return view('admin.create_machine', compact('vendors'));   
}

N: B: я использую multi-auth в своем проекте.

Ответы [ 3 ]

3 голосов
/ 12 июня 2019

Попробуйте с перенаправлением маршрута:

return redirect()->route('create_machine')->with('success','The First Machine with '.$number_of_lockers.' Lockers Added Successfully');

В поле зрения измените отображение сообщения следующим образом:

@if(session()->has('success'))
    <div class="alert alert-success">
        {{ session()->get('success') }}
    </div>
@endif

@if(session()->has('error'))
    <div class="alert alert-danger">
        {{ session()->get('error') }}
    </div>
@endif

Также кажется, что вы не обработали else case для метода сохранения,так что просто добавьте это тоже.

Как:

private function saveFirstMachine($number_of_lockers, $request) {
    ...

    if($machine->save()) {
       $saved = $this->saveLocker($number_of_lockers, $machine->id);
       if($saved) {
            return redirect()->route('create_machine')->with('success','The First Machine with '.$number_of_lockers.' Lockers Added Successfully');
       }
    }

    return redirect()->route('create_machine')->with('error','There is something wrong! Please try again.');
}

Отредактировано:

Изменить saveMachine, добавить return как

public function saveMachine(Request $request) { 
        $number_of_lockers = $request->number_of_lockers;
        if($number_of_lockers == '32') {
            $a_machine = A_Machine::all();
            if($a_machine->isEmpty()) {
               return $this->saveFirstMachine(32, $request);
            } else {
               return $this->saveNewMachine(32, $request);
            }
        } else if($number_of_lockers == '64') {
            $a_machine = B_Machine::all();
            if($a_machine->isEmpty()) {
               return $this->saveFirstMachine(64, $request);
            } else {
               return $this->saveNewMachine(64, $request);
            }
        } else if($number_of_lockers == '128') {
            $a_machine = C_Machine::all();
            if($a_machine->isEmpty()) {
                return $this->saveFirstMachine(128, $request);
            } else {
                return $this->saveNewMachine(128, $request);
            }
        }

       return redirect()->route('create_machine')->with('error','There is something wrong! Please try again.');
}
0 голосов
/ 24 июня 2019
   @if(Session::has('message'))
    @if( 'danger' == Session::get('message_type') )
    <div class="alert alert-danger alert-dismissable">
        <button type="button" class="close" data-dismiss="alert">×</button>
        <b>ERROR!</b> {{ Session::get('message') }}
    </div>
    @elseif( 'success' == Session::get('message_type') )
    <div class="alert alert-success alert-dismissable">
        <button type="button" class="close" data-dismiss="alert">×</button>
        <b>SUCCESSFUL!</b> {{ Session::get('message') }}
    </div>
    @elseif( 'warning' == Session::get('message_type') )
    <div class="alert alert-warning alert-dismissable">
        <button type="button" class="close" data-dismiss="alert">×</button>
        <b>ALERT!</b> {{ Session::get('message') }}
    </div>
    @endif
@endif

Контроллер

public function __construct(Machine $machine)
{
    $this->machine = $machine;
}



public function store (CreateSaveMachineRequest $request) { //CreateSaveMachineRequest Request for validation 

    $machine = $this->machine->create($request->except('_token'));
    try {
        if($machine){

            return \Redirect::back()->with('message', 'machine Created successfully. ')
                            ->with('message_type', 'success');
        }
    }
    catch (\Exception $exception) {

        return \Redirect::back()->with('message','machine Not Created')
                                ->with('message_type','danger')
                                ->withInput();
    }

}

Создать блейд-файл, например alert.blade.php @include (оповещение) для всех ваших блейд-файлов

0 голосов
/ 12 июня 2019

попробуйте

return redirect()->back()->with('success','your message');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...