我正在尝试建立一个简单的搜索功能。下面是我的搜索表单
<form class=" my-1 col-12 col-lg-8" action="{{ 'site-search' | page }}" method="POST">
<input name="q" class="form-control form-control-sm shadow rounded" type="search" placeholder="What are you sourcing for?" aria-label="Search">
<button style="display: none;" type="submit"> Search</button>
</form>然后我的查询
public function onStart(){
$search = Input::get('q');
$this['siteSearch'] = Advert::where('title', 'LIKE', '%' . $search . '%')->get();
}然后显示
{% for siteSearch in search %}
{{ search.title }}
{% endfor%}它似乎没有获得输入值,因为如果我尝试类似这样的操作
dd($this['siteSearch'] = Buy::where('title', 'LIKE', '%' . 'shoes' . '%')->get());它返回匹配鞋子的结果。这里可能出了什么问题?
发布于 2019-10-30 21:15:50
只是一个简单的错误。这
{% for search in siteSearch %}
{{ search.title }}
{% endfor%}而不是这个
{% for siteSearch in search %}
{{ search.title }}
{% endfor%}发布于 2019-10-30 22:47:45
您的onStart函数缺少应随所有POST请求一起使用的Request $request参数。在控制器的顶部,添加:
use Illuminate\Http\Request;然后,将您的函数重新定义为:
public function onStart(Request $request)接下来,通过以下方式获取搜索参数:
$search = $request->input('q');Input::get()用于访问PHP $_GET[]数组,但由于这是一个POST请求,您需要使用Request类正确地访问表单输入。
完整示例:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller {
public function onStart(Request $request){
$search = $request->input('q');
$this['siteSearch'] = Advert::where('title', 'LIKE', '%' . $search . '%')->get();
}
} https://stackoverflow.com/questions/58626006
复制相似问题