欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel request 对像 中间件 request 对象 有大用 有大大用

主要是 见 /framework/src/Illuminate/Http/Request.php 里在的方法吧

request()->headers->get('referer') ; request对象可以通过 request() 方法 来获取  返回上一个页面
return URL::previous(); 也是上一个页面

1)  $request->is('articles/create') 看这个$request 请求的url是否为真
2) 
$request->has('foo') 是 post 路径中有post 提交的 input 的name 为 'foo' 的值
3)
$request->user() 得到当前用户 user 
4) 
$request->notice 这个notice 就是 /notice/80 这个路径下的80 因为打印  $request->route()->parameters()  得到的就是得到所有的数组  array(1) { ["notice"]=> string(2) "80" }

$request->route()->parameters('notice')  也是得到所有的数组 

 ( $request->route()->parameters('aaaaa') ) 也是得到所有的数组 

array(1) { ["notice"]=> string(2) "80" }

事实上 parameters()方法 (复数方法) 是不需要参数的,当然有了参数也不会报错


$request->route()->parameter('notice')  得到的就是 80; 这里parameter方法 (单数方法)是需要参数的,没有参数就会报错


Request::except(['p']这是? 后面的参数 除了键为p的参数

Request::only(['p']这是? 后面的参数 仅仅键为p的参数

Request::all()   这是? 后面的参数 所以参数数组


$request->query() ;var_dump($request->query()); 网址为 http://www.aa.com/aaaa/bbbb?total=1&orderby_count_term_id=asc
$request->query()与 $request->all(),结果是一样的

 得到 array(2) {

      ["total"]=>

      string(1) "1"

      ["orderby_count_term_id"]=>

      string(3) "asc"

}


$request->getQueryString();假设网址为 http://www.aa.com//student-total?total=1&orderby_total_tuition=asc&aaa=111

 得到  aaa=111&orderby_total_tuition=asc&total=1


5)通过 dump($request) 或者 dd($request) 来看看值

6) Request::get('searchtype') (或者Request::input('searchtype')) (或者 request()->input('searchtype')) blade.php 模板中使用
<input class="search_1" type="text" name="search" maxlength="16" size="20" value="{{ Request::input('search')?Request::input('search'):'输入搜索的内容' }}" onfocus="if('输入搜索的内容' == this.value){this.value = ''; this.style.color = '#000'};" />
7) $request->input('username') 得到get或post的传值 8) Request::old('username')  也就是 old('username') 在模板中使用 9) Request::ajax() 判断是否是 ajax 10)假如是 http://my.tuiguang.com?aa=11  即 (http://my.tuiguang.com/?aa=11)
Request::path() 就是 '/'

11) http://www.wangzhangaiban.com/categorys/14?page=2 
Request::getRequestUri();得到的是 /categorys/14?page=2

11) $domain = substr (Request::root(), 7);

'http://my.tuiguang.com/?aa=11'   获取 Request::url()  Request::url() 就是 'http://my.tuiguang.com' 就是当前的url吧 当前路径


 下面这个有大用
网址 http://my.earsdi.com/common-user/0?aa=1
{{ Request::path() }}  //结果 common-user/0
{{ Request::getRequestUri() }} //结果 /common-user/0?aa=1BB
{{ Request::url() }} //结果 http://my.earsdi.com/common-user/0
{{ Request::fullUrl() }} //结果 http://my.earsdi.com/common-user/0?aa=1
{{ Request::fullUrlWithQuery(['orderby_xiao_fei_num'=>'desc'] }} 就是 http://my.earsdi.com/common-user/0?aa=1&orderby_xiao_fei_num=desc 假如原来的fullUrl()里面的
含有 orderby_xiao_fei_num=asc,,,那么orderby_xiao_fei_num=desc将替换掉原来的orderby_xiao_fei_num=asc




Request::fullUrl() 就是 'http://my.tuiguang.com/?aa=11'12)if($request->isMethod('post')){ } 判断是否是 post 提交
14)$method = Request::method(); 'GET' 或者 'POST'15) $request->route()->parameter('subdomain')  //这个有大用16) $request->route()->parameters()   //这个有大用

22down voteaccepted

I just checked and Request::root(); does return http://www.example.com in my case, no matter which route I'm on. You can then do the following to strip off the http:// part:

if (starts_with(Request::root(), 'http://')){$domain = substr (Request::root(), 7); // $domain is now 'www.example.com'}

You may want to double check or post more code (routes.php, controller code, ...) if the problem persists.

Another solution is to simply use $_SERVER['SERVER_NAME'].



15)可以使用 request 生成变量 


image.png

 在中间中用$request->attributes->add生成变量  然后再控制器$request->input('openid');获取就行了 


16)模板 blade 视图中 view  使用 request 

Request::get('searchtype') (或者Request::input('searchtype')) (或者 request()->input('searchtype'))

 {{ Request::input('search')?Request::input('search'):'输入关键字' }}



17) laravel 获取当前url, 路由


当前的url     \Request::getRequestUri()

当前route   \Request::route()->getName()


$request->except('input_name');
$request->only('input_name');
$request->all();



[L5]如何在中间件获取url参数

VICTOR_ARCAS 发表于2年前

我有这些路线

Route::group(['prefix' => '{id}/questions', 'middleware' => 'groupExists'], function(){Route::post( '/', 'QuestionsController@create' );Route::post( '/searches', 'QuestionsController@search' );
                });

我有这个中间件拦截他们

class GroupExists implements Middleware{    public function handle($request, Closure $next) {
        $group = Group::find($request->input('id')); // This is null$groupNotFound = !$group;if( $groupNotFound )
              ...

$ request-> input('id')不起作用。如何获取路由url的/ {id} /参数?

注意:id参数是“group”的id。这些“问题”与“团体”有关。图像的Route ::组嵌套在另一个Route :: group中。该路由是正确的,因为它返回,如果我把一个返回“foo”在其中。

最佳答案(由Victor_Arcas选定)
最好的

尝试:

$group = $request->id
最好的
 最好的
2年前(367,360 XP)

尝试:

$group = $request->id
 
疯狂的人
疯狂的人
2年前(2,250 XP)

尝试请求::细分

我想你可以得到段数组的第一个元素。你的身份证}。看这里:http : //laravel.com/api/5.0/Illuminate/Http/Request.html#method_segment

看看更多的想法:http : //laravel.io/forum/08-09-2014-get-url-segments-within-controller-index


segment 是什么?

 
willotter
willotter
1年前(460 XP)

只是为了保存一个同样的问题。如果您使用Route::resource('routeName')路由语法,您的id参数将被命名routeName

您可以访问所有参数  $request->route()->parameters()

 
matiascx
matiascx
2个月前(35,450 XP)

$request->route()->parameters() 将返回您可以使用的所有参数


来自  https://laracasts.com/discuss/channels/general-discussion/how-to-get-url-parameters-at-middleware


22down voteaccepted

I just checked and Request::root(); does return http://www.example.com in my case, no matter which route I'm on. You can then do the following to strip off the http:// part:

if (starts_with(Request::root(), 'http://')){$domain = substr (Request::root(), 7); // $domain is now 'www.example.com'}

You may want to double check or post more code (routes.php, controller code, ...) if the problem persists.

Another solution is to simply use $_SERVER['SERVER_NAME'].


普通分类: