【问题标题】:How to get data from db to layout in Laravel 8.*如何从 db 获取数据到 Laravel 8 中的布局。 *
【发布时间】:2021-08-23 05:31:58
【问题描述】:

所以我知道如何将数据检索到视图(使用控制器中的类) 但是我怎样才能将一些数据返回到布局,而这些数据没有(或者更确切地说我不知道​​它们在哪里)有它的类,我可以在其中获取代码。

这是我想输入城市名称的表格。

我总是通过使用 db 向我的前端控制器提供数据来做到这一点

$events = DB::select('select * from events');

return view('frontend/index', ['event' => $events]);

编辑

如何将$city->id 从循环传递到动作?

我的app.blade 表单:

<form method="POST" action="{!! route('cityView', ['id' => $city->id]) !!}" class="form-inline">
    <div class="form-group">
        <select name="city_id" class="form-control">
            <option>xd</option>
            @foreach(\App\Models\City::all() as $city)
                <option value="{{ $city->id }}">{{ $city->name }}</option>
            @endforeach
        </select>
    </div>
    <button type="submit" class="btn btn-info">Search</button></a>
</form>

但是我怎样才能为布局做呢?

制作布局控制器会有所帮助吗?或者可能在现有控制器中创建另一个类并返回布局视图的视图?

第二种解决方案是将此表单添加到每个视图中,因为它们只有 3 个,但我更喜欢 app.blade 的解决方案

【问题讨论】:

    标签: php laravel laravel-8


    【解决方案1】:

    您可以像这样直接从布局中调用数据:

    <form method="POST" action="#" class="form-inline">
        <div class="form-group">
            <select name="room_size" class="form-control">
                <option></option>
                @foreach(\App\Models\City::all() as $city)
                    <option value="{{ $city->id }}">{{ $city->name }}</option>
                @endforeach
            </select>
        </div>
        <button type="submit" class="btn btn-info">Search</button>
    </form>
    

    【讨论】:

    • 每天我们都会学到一些新东西,谢谢你好心的先生。我有一个问题,它可以保存使用吗?
    • 如果可以安全使用,我无法正确回答这个问题。我在一些生产项目中看到了这一点,并且我自己也在使用它,还没有遇到任何安全问题。但是,如果您不喜欢这种方法,您也可以将此表单作为组件并使用php artisan make:component Form,它会为此组件创建类,您可以在其中传递数据。您可以在这里找到更多信息:laravel.com/docs/8.x/blade#components
    • 谢谢。我在那里遇到了另一个问题,它确实将数据传递给 url,但是我不能将它的值传递给 {id} 内部操作,因为在此之后声明了 $city。我可以在循环后面移动动作以便我可以实际使用它吗?我的路线:action="{!! route('cityView', ['id' => $city_id]) !!}" 我编辑了主要问题,使其更加清晰。
    • 这样,您需要在@foreach 中移动表单,但这会使您的表单倍增。
    • 以您的方式,我会从您发送的请求数据中获取控制器内部的选定值,我想这是您正在使用的更新方法。并在我需要的地方使用该选定的值。还要更改路由名称以不使用任何参数。
    猜你喜欢
    • 1970-01-01
    • 2022-10-19
    • 2016-05-22
    • 2022-07-28
    • 2021-07-02
    • 1970-01-01
    • 2021-12-30
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多