php - 仅当使用 php 在 Laravel 中通过搜索找到查询时才显示
问题描述
我有查询推荐代码的推荐代码搜索框。此代码必须在用户注册之前可用。所以基本上在 Auth.register 上我有两个框,第一个框包含推荐代码搜索框,另一个是注册框。我的目标是首先隐藏注册框,只有在找到代码时才会出现。
注册控制器
public function index(Request $request)
{
$keyword = $request->get('search');
$referral = Referral::where('code', 'LIKE', '%'.$keyword.'%')->get();
if (count ( $referral ) > 0)
return view ( 'Auth.register')->withDetails ( $referral )->withQuery ( $keyword );
else
return view ( 'Auth.register')->withMessage ( 'The code you provided is not existing.' );
}
register.blade.php
<!-- THIS IS THE FIRST BOX THAT HOLDS THE CODE SEARCH BOX -->
<div class="card mx-4">
<div class="card-body p-4">
<h1>Referral Code</h1>
<p class="text-muted">Please provide the referral code given to you by your collector</p>
@if(isset($message))
<div class="alert alert-success">
{{ $message }}
</div>
@endif
{!! Form::open(['method' => 'GET', 'url' => '/register', 'class' => 'form-inline my-2 my-lg-0', 'role' => 'search']) !!}
<div style="width: 100%;">
<input type="text" class="form-control" name="search" style="width: 100%;" placeholder="Enter your referral code here!">
</div>
<div style="width: 150px; margin: auto; margin-top: 20px; ">
<button class="btn btn-success btn-default" type="submit">
<i class="fa fa-search"></i> Check Availability
</button>
</div>
{!! Form::close() !!}
</div>
</div>
<!-- THIS IS THE 2ND BOX THAT HOLDS THE REGISTRATION FORM -->
@if(isset($details))
<div class="card mx-4">
<div class="card-body p-4">
@foreach($details as $code)
@if($code->status==0)
<h2>Code is available</h2>
@else
<h2>Code is already taken</h2>
@endif
@endforeach
... the rest of registration form ...
</div>
</div>
@endif
我现在的问题是,@details 正在显示“推荐”的当前行
有没有办法从这条线查询,
$referral = Referral::where('code', 'LIKE', '%'.$keyword.'%')->get();
仅当结果与 $keyword 匹配时才应显示?
因为目前页面看起来像这样
解决方案
我认为您想要将关键字与您的数据库进行匹配。因此,不要使用部分匹配,而是使用精确匹配。
public function index(Request $request)
{
$keyword = $request->get('search');
$referral = Referral::where([
['code', $keyword],
['status', 0]
])->first();
if ($referral)
return view ( 'Auth.register')->withDetails ( $referral )->withQuery ( $keyword );
else
return view ( 'Auth.register')->withMessage ( 'The code you provided does not exist or already used.' );
}
并且鉴于您不需要使用以下行。
@foreach($details as $code)
@if($code->status==0)
<h2>Code is available</h2>
@else
<h2>Code is already taken</h2>
@endif
@endforeach
只需在 之后添加您的注册表单@if(isset($details))
。
你是怎么做的很奇怪。您可以使用
AJAX
在单个页面中执行此操作
推荐阅读
- c# - Unable to parse JSON array API in Xamarin.Forms to ListView
- 8thwall-xr - 远程应用程序能否以更高的分辨率运行
- python - deep copy nested iterable (or improved itertools.tee for iterable of iterables)
- reactjs - Reactjs 显示隐藏多个组件
- java - 用于生成 Cron 表达式的类型转换
- php - laravel中的列增量值
- c++ - 将最后一个元素设置为 NULL
- python - 为什么这更慢?
- amcharts - Trying to set custom colours for a chart
- file - 使用 SSIS 从管道分隔的平面文件中拆分记录