Laravel 5(URL未显示搜索参数)

时间:2015-12-04 00:54:28

标签: php laravel laravel-5 laravel-5.1 laravel-routing

Laravel的新手,

我的表单看起来像这样

{!! Form::open(array('action' => array('SearchController@postReviews' ), 'class'=>'form-inline')) !!}
    <div class="form-group">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">

        <div class="input-group">
            <div class="input-group-addon" style="width:110px;">Location</div>
            <input type="text" 
                   class="form-control "  
                   id="mapsearch" name="mapsearch" 
                   placeholder="Enter City,Pin or Address" 
                   style="height:43px; min-width:402px; font-size:1.0em;" required/>
            <div class="input-group-addon">
                {!! Form::select('size', 
                    array('Car' => 'Car', '2-Wheeler' => '2-Wheeler'), 
                    'Car', 
                    ['id'=> 'carmodel', 'class' => 'form-control input-sm', 'style'=>'width:200px;',
                    'required']) 
                !!}
            </div>
            <input type="hidden" class="form-control input-sm" name="input_lat" id="input_lat" required>
            <input type="hidden" class="form-control input-sm" name="input_lng" id="input_lng" required>
        </div>
        <button type="submit" class="btn btn-danger" id="btn_search" style="width:200px;height:42px;">Search</button>
   </div>

 </form>

我的控制器看起来像

public function postReviews()
{
    $location = Input::get('mapsearch');
    $input_lat = Input::get('input_lat');
    $input_lng = Input::get('input_lng');


    $inputs = ($input_lat  && $input_lng);
    if (!$inputs) {

      $input_lat = 22.5667;
      $input_lng = 88.3667;
    }...

现在一切正常。我能够毫无问题地生成结果。

令我感到不安的是,当我点击搜索时,我的网址仍然保持不变。

即。在搜索网址为http://localhost/reviews之前      搜索网址为http://localhost/reviews后 我应该更改什么,以便我的网址在搜索按钮点击后显示

http://localhost/reviews/(value from mapsearch field)

2 个答案:

答案 0 :(得分:0)

当你使用POST请求时,输入值是通过post发送的,不会附加到URL(而不是get请求,它们会被发送到localhost / reviews?mapsearch = xxxx&amp; input_lat = XXXXX&安培; input_lng = XXXXX)。要将该细分添加到网址,您必须执行以下两项操作之一:

1)在Controller中,处理输入,然后将它们重定向到映射到/ reviews / {mapsearch}

的路由

2)在页面上使用一些javascript来更新URL以显示mapsearch参数。为了更新他们看到的URL而不将其发送到新页面,您需要使用history.pushState。所以在你看来你会有

<script>
history.pushState({},"URL Rewrite Example","http://localhost/reviews/{{Input::get('mapsearch')}}")
</script>

这将更新其URL以显示该参数。并非所有浏览器都支持此功能,尤其是IE&lt; 10

答案 1 :(得分:0)

首先创建一个控制器动作

SELECT egr.*, carEgr.*, dirEgr.*, egrEmp.*, emp.*, boss.*, asoci.*, snip.*, pro.*
FROM egr 
JOIN carEgr
   ON carEgr.egr_name = egr.name
JOIN dirEgr
   ON dirEgr.egr_name = egr.name
JOIN egrEmp
    ON egrEmp.egr_name = egresado.name
JOIN emp
    ON emp.idEmp = egrEmp.emp_idEmp
JOIN boss
    ON boss.emp_idEmp = emp.idEmp
JOIN asosi
   ON asoci.egr_name = egr.name
JOIN snip
   ON snip.egr_name = egr.
JOIN pro
    ON pro.egr_name = egr.name

然后更改postReview返回以重定向到此操作。

public function reviewWithUri($uri,$data){
    return view('YOUR_VIEW_FILE')->with(['data'->$data]);
}

最后路由

public function postReview(){
    ........
    return redirect()->action('ReviewController@reviewWithUri', ['uri' =>$uri,'data'=>$data]);
}