注册用户返回dd

时间:2017-05-29 00:14:49

标签: php laravel

我正在使用laravel 5.4并且我有第二个公司用户表,经过长时间的搜索和与代码的斗争,我终于想到如何将数据保存在正确的表中,但有2个问题我仍然需要解决。

  1. 用户注册dump_var后会弹出!除了重定向到仪表板外
  2. 密码字段不会保存到数据库
  3. 这是我的registercontroller(你可以看到我没有任何dd();):

    <?php
    
    namespace App\Http\Controllers\Auth;
    
    use App\Company;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Validator;
    use Illuminate\Foundation\Auth\RegistersUsers;
    use Illuminate\Support\Facades\Input;
    use Illuminate\Http\Request;
    use Hash;
    use Session;
    
    class CompanyRegisterController extends Controller
    {
    
      /**
       * Where to redirect users after registration.
       *
       * @var string
       */
      protected $redirectTo = 'companies';
    
      public function __construct() {
        $this->middleware('guest:company');
      }
    
      protected function index()
      {
        return view('auth.company-register');
      }
        /**
         * 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, [
                'company_name' => 'required|string|max:255',
                'manager_name' => 'required|string|max:255',
                'username' => 'required',
                'email' => 'required|string|email|max:255|unique:companies',
                'password' => 'required|string|min:6|confirmed',
            ]);
        }
    
        /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return User
         */
        protected function create(Request $request)
        {
            return Company::create([
                'company_name' => Input::get('company_name'),
                'manager_name' => Input::get('manager_name'),
                'username' => Input::get('username'),
                'email' => Input::get('email'),
                'password' => Hash::make($request->password)
            ]);
    
            Session::flash('success', 'Welcome, thank you for choosing us for your advertise.');
            return redirect()->route('company.dashboard');
        }
    }
    

    Here is image after user register (return)

    This is how database looks like, all saved except password

    感谢。

1 个答案:

答案 0 :(得分:2)

  

用户注册dump_var后会弹出!除非重定向到仪表板

ModelName::create()返回创建的实例,并返回结果。所以这很有道理。您甚至评论了您的方法:@return User。如果您不想返回创建的用户:

protected function create(Request $request)
{
    Company::create([
        'company_name' => Input::get('company_name'),
        'manager_name' => Input::get('manager_name'),
        'username' => Input::get('username'),
        'email' => Input::get('email'),
        'password' => Hash::make($request->Password)
    ]);

    return 'Something else, a string or a view for example';
}
  

密码字段不会保存到数据库

当您验证密码时,您写了'password' => 'required|string|min:6|confirmed',因此我推断您已将密码字段命名为password。虽然在您创建用户时,您尝试通过Password检索名为$request->Password的字段。注意大写字母。 “P”不应该是小写的吗?

更新

这个答案是完全正确的,我只是忘了在我的模型中添加password字段以便填写

protected $fillable = [
    'company_name', 'manager_name', 'username', 'email', 'image', 'about', 'address', 'password',
];
相关问题