Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.6-登记表不起作用且未显示任何错误_Php_Laravel_Laravel 5.6 - Fatal编程技术网

Php Laravel 5.6-登记表不起作用且未显示任何错误

Php Laravel 5.6-登记表不起作用且未显示任何错误,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,在我最近的一个项目中,自定义注册表单不起作用。当我单击register按钮时,它会重新加载注册表,不会打印任何错误,也不会将任何数据插入数据库。以下是登记表的外观: 以下是迁移文件代码: public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('fname');

在我最近的一个项目中,自定义注册表单不起作用。当我单击register按钮时,它会重新加载注册表,不会打印任何错误,也不会将任何数据插入数据库。以下是登记表的外观:

以下是迁移文件代码:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('fname');
        $table->string('lname');
        $table->string('email')->unique();
        $table->string('contact');
        $table->string('password');
        $table->string('created_by');
        $table->string('modified_by')->nullable();
        $table->string('userrole');
        $table->rememberToken();
        $table->timestamps();
    });
}
以下是用户型号的代码:

protected $fillable = [
    'fname', 'lname', 'email', 'password', 'contact', 'created_by', 'userrole',
];

protected $hidden = [
    'password', 'remember_token', 'modified_by',
];
以下是注册表控制器的代码:

protected function create(array $data)
{
    return User::create([
        'fname' => $data['fname'],
        'lname' => $data['lname'],
        'email' => $data['email'],
        'contact' => $data['contact'],
        'created_by' => $data['email'],
        'userrole' => Config::get('constants.ROLE_USER'),
        'password' => Hash::make($data['password']),
    ]);
}
以下是constants.php的代码,它位于config文件夹中:

<?php
    return array(
        'ROLE_ADMIN' => 'ROLE_ADMIN',
        'ROLE_USER' => 'ROLE_USER'
    );

这可能是因为您有
@csrf
而没有
{{csrf\u field}}
,所以没有发布csrf令牌

此外,为了进行测试,您可以尝试将以下内容添加到刀片:

@if ($errors->any())    
    <ul>
    @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif

但是请注意可能正在对操作执行任何验证的任何
请求
s,这是因为您正在控制器中返回
User::create
。您必须重定向到某个页面,如主页或其他页面

如果你有一个主页,你可以在你的控制器中这样做

protected function create(Request $request)
{
    $data = $request->all();
    $user =  User::create([
        'fname' => $data['fname'],
        'lname' => $data['lname'],
        'email' => $data['email'],
        'contact' => $data['contact'],
        'created_by' => $data['email'],
        'userrole' => Config::get('constants.ROLE_USER'),
        'password' => Hash::make($data['password']),
    ]);

    return redirect('home')->with('message', 'User registered!');;
}
并使用此代码在主页上获取消息

@if (session('status'))
    <div class="alert alert-success">
        {{ session('status') }}
    </div>
@endif
@if(会话('status'))
{{session('status')}
@恩迪夫

以下是RegisterController的代码:

 protected function validator(array $data)
{

    return Validator::make($data, [
        'fname' => 'required|string|max:255',
        'lname' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',
    ]);
}

protected function create(array $data)
{
    return User::create([
        'fname' => $data['fname'],
        'lname' => $data['lname'],
        'email' => $data['email'],
        'contact' => $data['contact'],
        'created_by' => $data['email'],
        'userrole' => Config::get('constants.ROLE_USER'),
        'password' => Hash::make($data['password']),
    ]);
}


 public function register(Request $request)
   {
        $validation = $this->validator($request->all());
        if ($validation->fails())  {
            return redirect()->back()->with(['errors'=>$validation->errors()->toArray()]);
        }
        else{
            $user = $this->create($request->all());
            Auth::login($user); 
            return redirect('/dashboard')->with(['message'=>'Account Successfully Created.']);
        }
   }
在您的刀片视图中:

@if (count($errors) > 0)
  @foreach ($errors->all() as $error)
    <p class="alert alert-danger alert-dismissible fade show" role="alert">{{ $error }}
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
    </button>
  </p>
  @endforeach
@endif

@if (session()->has('message'))
    <p class="alert alert-success alert-dismissible fade show" role="alert">{{ session('message') }}
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
  </button>
  </p>
@endif
@if(计数($errors)>0)
@foreach($errors->all()作为$error)

{{{$error} &时代;

@endforeach @恩迪夫 @如果(session()->has('message'))

{{{session('message')} &时代;

@恩迪夫
单击“注册”按钮后,如果您不想重新加载页面,而是想将您重定向到其他地方并打印消息,请尝试以下操作:

protected function create(array $data)
{
    $user = User::create([
        'fname' => $data['fname'],
        'lname' => $data['lname'],
        'email' => $data['email'],
        'contact' => $data['contact'],
        'created_by' => $data['email'],
        'userrole' => Config::get('constants.ROLE_USER'),
        'password' => Hash::make($data['password']),
    ]);

    session()->flash('message', 'Thank you for registering!');

    return redirect()->home();
}

有几件事你必须改变<代码>创建
控制器应具有公共可见性。使用
Request$Request
作为参数,而不是
array$data
。我希望这能帮助您:发现在寄存器刀片上添加@dump($errors)有助于找出错误的确切原因。在不久前的某个地方看到这个,使用它,它帮助我快速前进。在Laravel 5.6中,我认为@csrf相当于{{csrf_field}。完全相同。@Shimul,如果你已经解决了这个问题。请接受答案,以便其他人知道此问题已得到回答。感谢您的替代解决方案,但这不是我想要的实际解决方案。到目前为止,我对Laravel默认流[注册&而不是自动登录]很满意。这是一个验证错误,默认情况下搜索名称字段,但我将名称扩展为fname和lname,这就是错误发生的原因。谢谢您,我同意这是解决上述查询的正确方法
@if (count($errors) > 0)
  @foreach ($errors->all() as $error)
    <p class="alert alert-danger alert-dismissible fade show" role="alert">{{ $error }}
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
    </button>
  </p>
  @endforeach
@endif

@if (session()->has('message'))
    <p class="alert alert-success alert-dismissible fade show" role="alert">{{ session('message') }}
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
  </button>
  </p>
@endif
protected function create(array $data)
{
    $user = User::create([
        'fname' => $data['fname'],
        'lname' => $data['lname'],
        'email' => $data['email'],
        'contact' => $data['contact'],
        'created_by' => $data['email'],
        'userrole' => Config::get('constants.ROLE_USER'),
        'password' => Hash::make($data['password']),
    ]);

    session()->flash('message', 'Thank you for registering!');

    return redirect()->home();
}