首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在octobercms中从非ajax表单获取输入值

在octobercms中从非ajax表单获取输入值
EN

Stack Overflow用户
提问于 2019-10-30 21:02:08
回答 2查看 82关注 0票数 1

我正在尝试建立一个简单的搜索功能。下面是我的搜索表单

代码语言:javascript
复制
<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>

然后我的查询

代码语言:javascript
复制
public function onStart(){
    $search = Input::get('q');
    $this['siteSearch'] = Advert::where('title', 'LIKE', '%' . $search . '%')->get();
}

然后显示

代码语言:javascript
复制
{% for siteSearch in search %}
  {{ search.title }}
{% endfor%}

它似乎没有获得输入值,因为如果我尝试类似这样的操作

代码语言:javascript
复制
dd($this['siteSearch'] = Buy::where('title', 'LIKE', '%' . 'shoes' . '%')->get());

它返回匹配鞋子的结果。这里可能出了什么问题?

EN

回答 2

Stack Overflow用户

发布于 2019-10-30 21:15:50

只是一个简单的错误。这

代码语言:javascript
复制
{% for search in siteSearch %}
{{ search.title }}
{% endfor%}

而不是这个

代码语言:javascript
复制
{% for siteSearch in search %}
{{ search.title }}
{% endfor%}
票数 0
EN

Stack Overflow用户

发布于 2019-10-30 22:47:45

您的onStart函数缺少应随所有POST请求一起使用的Request $request参数。在控制器的顶部,添加:

代码语言:javascript
复制
use Illuminate\Http\Request;

然后,将您的函数重新定义为:

代码语言:javascript
复制
public function onStart(Request $request)

接下来,通过以下方式获取搜索参数:

代码语言:javascript
复制
$search = $request->input('q');

Input::get()用于访问PHP $_GET[]数组,但由于这是一个POST请求,您需要使用Request类正确地访问表单输入。

完整示例:

代码语言:javascript
复制
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();
  }
}    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58626006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档