Как заставить мои $ продолжить останавливаться при сбое

#laravel #laravel-7

#laravel #laravel-7

Вопрос:

Я пытаюсь создать форму загрузки, которая проверяет, существует ли код продукта. Проблема, с которой я сталкиваюсь, заключается в том, что даже если он не существует, он все равно оказывается истинным, и это потому, что он повторяется, а false перезаписывается.

Итак, я хочу, чтобы это произошло, когда я нажимаю кнопку отправки, и она попадает в $proceed = false раздел, который я хочу, чтобы он остановился и вернул представление с сообщением об ошибке

Вот мой код

 
$categories = Category::all();

$codes = [];
foreach($categories as $category)
{
    $codes[$category->code] = [
        'code' => $category->code,
        'name' => $category->name
    ];
}

foreach($product['codes'] as $code)
{
    if(array_key_exists($code, $codes))
    {
        $proceed = true;
    }else{
        $proceed = false;
    }
}

if($proceed == true)
{
    return view('product-upload', [
        'message' => "Upload was a success";
    ]);
}else{
    return view('product-upload', [
        'message' => "Upload was a failure";
    ]);
}
  

мой product-upload.blade.php

     <div class="row justify-content-center">
        <div class="col-md-6">

            <div class="card">
                <div class="card-body">

                    {{  session()->get('message') }}
                </div>
            </div>

        </div>
    </div>
  

Ответ №1:

Вы можете добавить инструкцию break после $proceed = true, чтобы остановить цикл.

 $proceed = false;
foreach($product['codes'] as $code)
{
    if(array_key_exists($code, $codes))
    {
        $proceed = true;
        break;
    }
}
  

Комментарии:

1. Это останавливает его, но когда я пытаюсь отобразить представление, я получаю пустую страницу

Ответ №2:

вы можете использовать возврат раньше

 foreach($product['codes'] as $code)
{
    if(array_key_exists($code, $codes))
    {
         return view('product-upload', [
             'message' => "Upload was a success";
        ]);
    }
}

return view('product-upload', [
   'message' => "Upload was a failure";
]);
  

на мой взгляд, это намного чище

Комментарии:

1. Я просто получаю пустую страницу, и нет никаких ошибок

2. session()->get('message') для печати вам нужно получить сообщение об ошибке

3. Я все еще получаю пустую страницу. Я добавил свой product-upload.blade.php также ответьте на мой вопрос

4. @Nienna opss извините, что это не в сеансе {{ $message }} , это сработает

5. Это то, что у меня было изначально, но все еще пустая страница