0
Laravel在其Request类中有一个方法,用于检查请求中是否存在变量。
$request->has('varnamegoeshere')
我需要做相反的事情,并检查请求中是否存在变量。当然,你会觉得下面的工作,但它并不:
if(!$request->has('varnamegoeshere'))
我怎么去检查,如果一个变量不要求存在吗?
UPDATE:控制器和类代码如下
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Project\Frontend\Repo\Vehicle\VehicleInterface;
use Illuminate\Support\Facades\View;
class SearchController extends BaseController
{
protected $vehicle;
public function __construct(
VehicleInterface $vehicle
)
{
$this->vehicle = $vehicle;
}
public function index(Request $request)
{
/*
* Search Refinement
*/
// Set links that will refine user selection when clicked
$search = array();
if(!$request->has('make'))
{
// Fetch makes for user refinement
$search['makes'] = $this->vehicle->setMakeLinks($request);
}
if(View::exists('index'))
{
return View::make('search')
->with('search', $search);
}
}
}
口才一流
<?php
namespace App\Project\Frontend\Repo\Vehicle;
use Illuminate\Database\Eloquent\Model;
class EloquentVehicle implements VehicleInterface
{
/**
* Protected variables
*
* @var Model
*/
protected $vehicle;
/**
* EloquentVehicle constructor.
*
* @param Model $vehicle
*/
public function __construct(
Model $vehicle
)
{
$this->vehicle = $vehicle;
}
/**
* Create links based on unique makes retrieved from the database
*
* @param null $request
* @return mixed
*/
public function setMakeLinks($request = null)
{
$query = $this->vehicle->groupBy('make')
->orderBy('make', 'asc')
->get();
// Create empty array
$links = array();
// Obtain query string
$queryString = str_replace($request->url(), '', $request->fullUrl());
foreach($query as $vehicle)
{
$append = '?make='.$vehicle->make;
if ($queryString != '')
$append = $queryString.'&make='.$vehicle->make;
array_push($links, '<a title="'.$vehicle->make.' for sale" itemprop="brand" href="'.url('usedcars/'.$append.'#searched').'">'.$vehicle->make.'</a>');
}
return $links;
}
}
查看文件
@extends('layouts.template')
@section('content')
@if(isset($search['make']))
<div id="refine" class="makes" itemscope itemtype="http://schema.org/AutomotiveBusiness">
<h2>Find cars by Make</h2>
<div id="choices">
@foreach($search['make'] as $link)
{!! $link !!}
@endforeach
<div id="clear-both"></div>
</div>
</div>
@endif
@endsection
我假设你注入'Request'类。你所做的没有任何问题。这就是你如何检查请求是否有参数。通过文档'如果该值存在并且不是空字符串,则has方法返回true。问题在于其他地方,因为这不能正常工作。你确定你正在注入正确的课程吗? – Andrew
$ request->返回值定义为bool,这意味着“if(!$ request-> has('varnamegoeshere'))”是正确的。你确定错误在那个部分吗? – Tiega
@Andrew我正在注入正确的课程。我做了一个dd($ request-> all());检查请求中的内容,并返回一个数组,其中包含URL中存在的$ _GET变量。 – VenomRush