Laravel 11:如何从控制器内的多个函数/方法传递数据?

问题描述 投票:0回答:1

我确实在我的控制器中设置了这个,它具有三个功能,即

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 语句来更改已选择尺寸的用户的 UI,其中我将显示他们选择的尺寸,否则向未选择尺寸的用户显示选择,以便他们选择所需的尺寸。

我感谢任何帮助或想法!

laravel model-view-controller laravel-blade laravel-11
1个回答
0
投票

在刀片模板中,调整条件以正确检查计数器值:

@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
© www.soinside.com 2019 - 2024. All rights reserved.