【问题标题】:Retrieve data from URL in laravel从 Laravel 中的 URL 检索数据
【发布时间】:2020-06-10 16:03:20
【问题描述】:

我正在尝试进行推荐申请。唯一的问题是,当我访问指向注册页面的链接时,我的 URL 中有一个参数,我不知道,我不知道如何从 URL 中获取该参数并将其分配给创建的用户。我试图做一个函数,但我没有再次意识到如何从创建的用户中的该函数变量中获取数据。

生成引荐链接的栏目:

        <td>{{ route('refs.user',['name' => $referralCategory->name,'id'=>$referralCategory->id]) }}</td>

web.php

Route::get('refs/{name}/{id}','ReferralCategoryController@refs')->name('refs.user');

以及重定向到注册页面的功能

public function refs($name = null,$id = null){
        //dd($name);
        if(!$id){
            return redirect(route('login'));
        }
        else{

            if($id){
                $refCategory = ReferralCategory::where('id', $id)->first();
                ReferralCategory::where('id', $id)->update([
                    'referral_visits' => $refCategory->referral_visits + 1
                ]);
            }
            return redirect()->route('register', ['name' => $name]);

        }
        if(Cookie::get('id')){
            return(route('register'));
        }
        return response(route('register'))
        ->cookie('id', $id, 60*24*30*12)
        ->cookie('name',$name, 60*24*30*12);
    }

寄存器控制器:

Route::get('register/{name}','Auth\RegisterController@register_ref')->name('register_ref.cat');
<?php

    namespace App\Http\Controllers\Auth;

    use App\User;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Validator;
    use Illuminate\Foundation\Auth\RegistersUsers;
    use Illuminate\Http\Request;

    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 = '/home';

        /**
         * 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, [
                'name' => 'required|string|max:255',
                'email' => 'required|string|email|max:255|unique:users',
                'password' => 'required|string|min:6|confirmed',
                'referred_by' => 'string|max:20',
            ]);
        }

        public function register_ref( $name = null){


            return redirect()->route('register', ['name' => $name]);


        }

        /**
         * Create a new user instance after a valid registration.
         *


   * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {       


            return User::create(    [

                'name' => $data['name'],
                'email' => $data['email'],
                'password' => bcrypt($data['password']),
                'referred_by' => $data['referred_by'],

                ]);


    }


}

【问题讨论】:

  • 嗨!是否要获取名称并放入注册表单视图?
  • 不,我只是想取名字并插入表格,而不是将列放在表格中
  • 查看return redirect()-&gt;route('register', ['name' =&gt; $name]); 您正在将名称发送到您的注册视图中,因此您必须将输入类型隐藏在您的注册视图中,并在您提交表单时将 $name 回显到隐藏类型值中然后您可以收到。有什么意义吗?让我知道。谢谢
  • 我想我知道,您的意思是我必须将来自 URL 的名称接收到输入/标签字段中并隐藏,然后我必须在创建时接受该输入?
  • 在 register.blade 我做这样的事情: {{ app('request')->input('name') }}

标签: php laravel laravel-artisan


【解决方案1】:

变量,你通过路由,可以直接在方法中调用:

public function helloWorld($variableFromRoute) { }

更好:如果你想注册一个用户,你应该使用http post request。

<form method="post" action="{{ route('route_name') }}">
  <input type="text" name="username">
  <input type="password" name="pw">
  <input type="password" name="pw_repeated">
  <input type="submit" name="submit" value="Register">
</form>

public function register(Request $request) {
  // validate
  // create record
  // redirect
}

最佳:...或者只使用 laravel 身份验证系统。

干杯,

尼克拉斯

【讨论】:

  • 我想注册一个用户,但我希望该用户来自通过电子邮件发送的推荐链接。我在你写的时候写了一个函数,但是当我想把它放在创建时它是空的。
  • 请发布您的代码。有时用户在填充模型的类属性后忘记执行 save() 方法。 (laravel.com/docs/5.0/eloquent#insert-update-delete)
猜你喜欢
  • 1970-01-01
  • 2016-09-02
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多