【问题标题】:How to read URL parameters in laravel如何在 laravel 中读取 URL 参数
【发布时间】:2018-05-13 00:51:58
【问题描述】:

我是初学者,正在尝试创建推荐系统。以下是示例网址

http://dev.lea.com/register?ref=mh2HPLpVSn

我尝试获取推荐字符串。我怎样才能分开?是否需要中间件来获取 cookie?如果是,那么中间件的代码是什么?以及如何在 RegisterController 中获得推荐参考?

这是我的注册控制器。

<?php

namespace Lea\Http\Controllers\Auth;

use DB;
use Lea\User;
use Lea\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Cookie;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'fname' => 'required|string|max:255',
            'lname' => 'required|string|max:255',
            'referral' => 'string|max:255',
            'username' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            // 'tracking_id' => 'required',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \Lea\User
     */
    protected function create(array $data, Request $request)
    {

        //  printing here referral Link
        echo $request()->ref;


        // $referred_by = Cookie::get();
        // print_r($referred_by); 
        die;

        return User::create([
            'fname' => $data['fname'],
            'lname' => $data['lname'],
            'username' => $data['username'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'affiliate_id' => str_random(10),
            // 'referred_by' => $referred_by,
            'identity' => $data['identity'],
            'dob' => $data['dob'],
            'board_id' => $data['board_id'],
            'class_id' => $data['class_id'],
            'subject_id' => $data['subject_id'],
            'institute' => $data['institute'],
            'address' => $data['address'],
            'city' => $data['city'],
            'std_mobile' => $data['std_mobile'],
            'father_name' => $data['father_name'],
            'father_mobile' => $data['father_mob'],
            'ipadress' => \Request::ip(),
        ]);
    }

}

【问题讨论】:

  • this link 拥有您所需要的一切。
  • 当你有一个像 /register?ref=mh2HPLpVSn 这样的 URI 时,你可以像这样在你的控制器中检索 ref:request()-&gt;ref!让我知道这是否有效!

标签: laravel routing middleware laravel-middleware referrals


【解决方案1】:

在 laravel 6+ 内部控制器中,您可以像这样使用

$request->get('ResourcePath')

【讨论】:

    【解决方案2】:
    public function showRegister(Request $request) {
        var_dump(request->ref)
    }
    

    然后您可以执行验证等操作,另一种可能性是更改注册表单的模板并使用 ref 参数中的 refcode 添加一个隐藏字段,并在您的 register 方法中处理整个请求。

    【讨论】:

    • 如果我添加 Request $request 然后我得到以下错误。传递给 Lea\Http\Controllers\Auth\RegisterController::create() 的参数 2 必须是 Illuminate\Http\Request 的实例,没有给出,在 E:\xampp\htdocs\laravel\lea\vendor\laravel\framework 中调用\src\Illuminate\Foundation\Auth\RegistersUsers.php 在第 33 行并定义
    【解决方案3】:

    如果你有一个 URI,例如 /register?ref=mh2HPLpVSn,你可以像这样检索 ref

    $request()->ref
    

    在您的控制器中!我相信您也可以使用$request()-&gt;has('ref') 来确定它是否存在于 URI 中。

    希望对你有帮助!!

    【讨论】:

    • 你检查过这个答案吗?
    • 没用。我正在关注本教程,中间不是参考值。 brudtkuhl.com/building-referral-system-laravel
    • 试试:dd($request()-&gt;ref);
    • 因为我添加了“Request $request”作为函数参数。我收到以下错误 (1/1) 传递给 Lea\Http\Controllers\Auth\RegisterController::create() 的 ErrorException 参数 2 必须是 Illuminate\Http\Request 的实例,没有给出,在 E:\xampp\htdocs 中调用\laravel\lea\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php 在第 33 行并定义
    • 你在路由中定义了POST方法吗?
    【解决方案4】:

    您可以使用请求访问来获取您的参数。
    这是获取参考代码的一个示例:

    public function register(Request $request)
    {
        $allParams = $request->all();
        $refParam = $request->ref;
        dd($allParams, $refParam);
    
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 2018-05-31
      • 1970-01-01
      • 2019-06-28
      相关资源
      最近更新 更多