【问题标题】:Laravel how can I change query string url values?Laravel 如何更改查询字符串 url 值?
【发布时间】:2016-10-29 18:34:48
【问题描述】:

我有一个搜索过滤器,其中包含最低和最高价格(货币转换器)的值,我想在同一页面上更改货币的价值,当我运行它时,价格输入不会改变,直到我已经用分页链接更改了页面。

我在视图上附加这样的价格(来自控制器的$max_price):

 {!! Form::text('max_price',(int)$max_price,array('class'=>'sliderValue')) !!}

查询网址字符串:

   www.example.com/items?search=min_price=0&max_price=1814

   $items->setPath('items');
   $items->appends(['search' => $input['search'], 'min_price' =>      
   $min_price, 'max_price' => $max_price]);

使用 $request->replace($requestArray) 解决了它

【问题讨论】:

  • 您可能必须使用 AJAX 在当前页面本身上显示价值。
  • 我用雄辩的“replace()”解决了这个问题
  • 能否请您在这里提供解决方案,以便其他人从中受益?

标签: php forms laravel url pagination


【解决方案1】:

我无法使用 replace() 解决它,因为当我从 $request->get('search') 获取值时,它返回了来自 queryString 的原始值...

我做了什么:

use Symfony\Component\HttpFoundation\ParameterBag;

$oldQueryString = $this->request->query->all(); // To not lose other params
$params = [
    'search' => $input['search'], 
    'min_price' => $min_price, 
    'max_price' => $max_price
];
// Merge other params to the new ones
$newQueryString = array_merge($oldQueryString, $params);
$request->query = new ParameterBag($newQueryString);

现在,当我使用 $request->get('search') 时,它会返回新值。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多