我们在主页中内置了一个简单的搜索/列表表单:
<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 以及构成页面的其他部分(如页眉、页脚)的完整页面?
假设您没有使用 JS 重新加载页面,
/alphabetical-list
路由和/
路由上的表单必须返回不同的视图,因此访问不同的控制器。但是要按照您的预期运行,他们应该使用相同的控制器。
实现此目的的一个简单方法是使用相同的
method
并定位相同的目的地(表单的 action
属性)。使用 Laravel 的命名路由工具(如 route()
)可以帮助避免这种类型的路由控制器混淆。