Laravel将URL传递给控制器

时间:2015-07-24 11:44:46

标签: php laravel routes

我需要将URL传递给控制器​​,如下所示:

((JTextComponent)combobox.getEditor().getEditorComponent()).hasFocus()

但是当我传递一个网址时:

Route::get('vote/scraper?s={url}', 'VoteController@getUrlData');

Laravel认为URL中的其他斜杠是不同的视图并抛出NotFoundHttpException。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

从路线中删除查询:

Route::get('vote/scraper', 'VoteController@getUrlData');

尝试从输入:: get()获取网址,如

$url = Input::get('url');

PS:查询中的编码URL是一种很好的推荐做法。

答案 1 :(得分:1)

这有效!

Route::get('add/{encoded_url}', function($encoded_url) { return 'The URL is: '.rawurldecode($encoded_url); })->where('encoded_url', '.*');

答案 2 :(得分:1)

转换代码mysite.com/vote/scraper?s=http://www.example.com/fastrack-wayfarer-sunglasses/p/itmdx7z4hgjgp5st应为mysite.com/vote/scraper?s=http%3A%2F%2Fwww.example.com%2Ffastrack-wayfarer-sunglasses%2Fp%2Fitmdx7z4hgjgp5st

您可以在php中使用urlencode或在javascript(http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp)中使用encodeURIComponent获取已编码的网址

然后,您的路线应为Route::get('vote/scraper', 'VoteController@getUrlData');

最后,在getUrlData中使用$url = \Input::get('s');

或者在Laravel 5.1中

public function getUrlData(Request $request)
{
    $url = $request->input('s');
}

答案 3 :(得分:0)

您需要使用urlencode()对您的网址进行编码。

https://secure.php.net/manual/en/function.urlencode.php

相关问题