Laravel 11: Как передать данные из нескольких функций/методов внутри контроллера?

У меня есть эта настройка в моем контроллере, который имеет три функции, а именно: func1, func2 и, наконец, func3.

Текущая ошибка, с которой я сейчас сталкиваюсь, выдает это сообщение об ошибке:

Internal Server Error

Too few arguments to function
0 passed and exactly 1 expected

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

Теперь, учитывая func1, где находится выражение условия, оно выглядит следующим образом;

public function func1()
    {
        $counter = UserSizes::where('user_uid', 'johnd01')->count();
        if ($counter > 0) {
           //display the selected sizes by the user
            $this->func2($counter);
        } else {
           //since it is zero the user did not have selected any sizes.
            $this->func3($counter);
        }
        
    }

как вы можете видеть, если счетчик больше 0, он попадет в func2, и я хочу, чтобы данные счетчика передавались в func2, так же, как я хочу, чтобы моя func2 также имела доступ к этим данным. так что согласно моему func2.

public function func2($counter)
    {
        $getSizes= UserSizes::where('user_uid', 'johnd01')->get();
        return view('auth.user_pref', [
            'getSizes' => $getSizes,
            'counter' => $counter,
        ]);
    }

Главное, чего я хочу добиться, это то, что в основной функции я хочу отфильтровать ее для пользователей, у которых нет размеров и у которых есть выбранные размеры, и в блейд-файле.

так что в блейд-файле это выглядит так:

@if ($counter <0)
// display the selection of sizes
@else
// display the selected sizes of the user.          
@endif

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

Я ценю любую помощь или идеи!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В шаблоне блейда настройте условие, чтобы правильно проверять значение счетчика:

@if ($counter > 0)
<!-- Display the selected sizes of the user -->
<h1>Selected Sizes</h1>
<ul>
    @foreach ($getSizes as $size)
        <li>{{ $size->size }}</li>
    @endforeach
</ul>
@else
<!-- Display the selection for the user to choose sizes -->
<h1>Select Your Sizes</h1>
<form method = "POST" action = "{{ route('saveUserSizes') }}">
    @csrf
    <!-- Example of input fields for sizes -->
    <label for = "size1">Size 1</label>
    <input type = "text" id = "size1" name = "sizes[]">
    
    <label for = "size2">Size 2</label>
    <input type = "text" id = "size2" name = "sizes[]">
    
    <button type = "submit">Save Sizes</button>
</form>
@endif

Это действительно работает, и вам также спасибо за то, что вы указали путь к saveusersize.

alex wang 10.06.2024 05:07

Другие вопросы по теме