在 Laravel 中如何显示完整页面?它只显示了视图的一部分

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

我们在主页中内置了一个简单的搜索/列表表单:

<form id ="search-by-country" method='post' action='/alphabetical-list'>
    <!-- Include the CSRF token -->
    @csrf
    <select name="country_id" id="country_id">
        <option value="US">United States</option>
        <option value="FR">France</option>
        <option value="DE">Germany</option>
        <option value="JP">Japan</option>
    </select>

    <button type="submit" class="btn btn-darkorange">Submit</button>
</form>

我们有一个单独的结果页面,它可以作为单独的页面正常工作,这意味着如果您单击它,它会像普通页面一样正确显示,尽管带有格式化的搜索结果。

由于结果页面提供了扩展的搜索参数,我们在 web.php 中设置了一条路由及其自己的控制器页面。

如果我们做出选择并单击“提交”,它将找到按字母顺序排列的列表页面,但完全脱离了上下文。我的意思是没有格式,它缺少所有页面部分,仅将页面的扩展搜索显示为简单的 HTML,此图像:

我对 Laravel 相当陌生,不知道如何让它工作。看起来如此简单。

这是控制器文件。

namespace App\Http\Controllers;

use App\DTE\CustomFunctions;
use Illuminate\Http\Request;
use Illuminate\Foundation\Http\FormRequest;

class AlphaSearchController extends Controller
{
    public function search(Request $request)
    {
        $fname = $request->input('fname');
        $name = $request->input('name');
        $city = $request->input('city');
        $country = $request->input('country');
        $country_code = $request->input('country_code');
        $country_name = $request->input('country_name');
        $contemporary = $request->input('contemporary');
        $from = $request->input('from');
        $to = $request->input('to');
        $search_type = $request->input('search_type');

        return view('public.search.search', [
            'name' => $name,
            'city' => $city,
            'country_code' => $country_code,
            'country_name' => $country_name,
            'from' => $from,
            'to' => $to,
            'contemporary' => $contemporary,
            'search_type' => $search_type,
        ]);
    }
}

问题:它发布到搜索结果页面,但显示未格式化的页面,如图像。我们如何让它发布并显示包含 HTML、CSS、Javascript 以及构成页面的其他部分(如页眉、页脚)的完整页面?

php html laravel post
1个回答
0
投票
  • 用户的浏览器正在按设计进行导航。
    因此,表单按预期提交。
  • 正在显示搜索结果。
    因此,表单正在提交预期的内容,并且正在按设计查询数据库。

假设您没有使用 JS 重新加载页面,

/alphabetical-list
路由和
/
路由上的表单必须返回不同的视图,因此访问不同的控制器。
但是要按照您的预期运行,他们应该使用相同的控制器。

实现此目的的一个简单方法是使用相同的

method
并定位相同的目的地(表单的
action
属性)。使用 Laravel 的命名路由工具(如
route()
)可以帮助避免这种类型的路由控制器混淆。

© www.soinside.com 2019 - 2024. All rights reserved.